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 936331009cbfbb6ac7f3edb10238bb72b8b3ec9b..7e771af03732cf2415eadb36f68742d298fecb9c 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 eacc1b709c625edef4f884330155abf214ae5920..e5ecd52d042e13d5d2944dba0d634343fae293bc 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 f4c9bfe4e57e96211664a965a551867d9a1377cc..f6250b0af232777e23efafb79f520d8783795864 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 27bb16bf60cab7184b862f2ab94b39377a6aadb1..8e9c44e1cc6a94950050f8b3218954d801c02d35 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 c6740303f46004348145dea36d57459898388330..0925479b4ea932ad12a1b3bb468c4e5b6bfb3ad3 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 e6a44deb9e048bb20ebb4534d14860b41fbbfdb8..7c41da2ceb1ae40f3e3f845423257badaa0ecaca 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 ebc4e74909b168582e094e2a298c8859dee78cf6..5c7b02fa469136082361ea6a39d855186ef5baec 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 1cc880e8aaa091fee3bd365b695fb50026670804..75e038a10398e2c9c939e00ce7389f93ae690c16 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 4087cbdc639164114c84b8f64edf685c04e3e48f..9da632a37fc5956910b750ff383b74d2200230dc 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 169f53a57a227e49ae628dccfb2acba1c61a6093..503ec7d8989fb1ea3d55f03fcf1e38c64cc55e44 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 563af42bd6f097d26b895dc8e8fc723b2c56f2d9..789674836b46bddfc65781253f8ece371d83ebc7 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 9bad6bede84d2e1e5d76819381e7145020521735..5d6bbc1a5930e593c8911d10609f16f522695c02 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 3112aead035884d4fd14dca2e10a8d50d3be60fb..e274820717b694352949cc49dd89464eae04fce2 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 1471ee503ae9fa1c7adafab07187bf6976b499e1..1eac00d46851954fecb4843bd5df558e226becd1 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 de3ad30b792f58bb97076a80644aec9c61b7f43d..dbf50bc00843dfd56b75847335936ebe2d1a0af9 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 6be105291d4738b4b12bb7f3251ec611eb7a8d4a..00acee89953856cb36512ba773b3bd56754d20bd 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 770768432f399fd27f8e241749bb020f5741f907..749b48d8a2adf1f1735dd613395b8faa8f1cef6f 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 67b1857304577f8b439db5537c55518d076cda37..e744128c6efbe319ec299db4b7864e270b18ea4f 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 c9df0158fcdf8fb80e876771ccf840cfabade3f8..e72f4aab49abfce5d398813e3e4e405e0e86b0ce 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 f8254ae83a563d7c3473d31947c6b972b0923204..438a810dac7a5803b240059db5c1de8d76f5df19 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 eb24bf97d00791f20c6cbc2ff5df7c7a61825e0e..2bf2e8a962d78c91a86a11137cdb44553f90e6c1 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 fa8b81de4c5a82cc36c2fe577c3e6f529bd1fffe..69579f172c2083ff841f5c204e371cfa29be55f2 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 37808a987380123791a8e535ab042ab5ad3211a1..3a9417fafc7f36350fee81e1c6caee59c9b7770a 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 c09bf01f3319a8668fd73ffa229eb1986a9e8c82..2f6e67726028be12ffb71282c864a60a5e1b2bf6 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 4d49906ec032b341412709d358e52619824420d3..62e94d2a31ffbf1319188a1e5fdb0abe88b6fabd 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 543dd3adcb72ed96922a7eccb32f945b91eb7280..964c3d340a139d569abe28c8ce3b9bbc203aa76c 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 d80cb49a0a7df53d3fdf09c8236704c1c763cd2d..11a9fc5b0796706ceddef358908b1f8df452d6ae 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 b643d08ff166c7a65a85a179bde9f73995831996..2941ac08cd54a0d289ac77791c94bb18127b8dac 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 813de76f6e47c3fb80db332e46d24b78b3e635e7..566e97f529af5f80a2dec500d91b51cbe11740ce 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 7851756f51547d1b90105287800b61838eb81412..e0381e7cdbceed48845a02a59a20530d86bca1e5 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 844231c32dcaaf5f5b40a5d564106794a36e5c80..63d371c18065fae63cc505c1109d3898c2f5da12 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 55a30af64e76d8f9b2a2a9db3602ae4fc1b2b372..cc1b9ba757d720062468d15f72a045a9e126527b 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 35bc0912017d0046400c6015f073fd4e182f28af..5df4d453a8ef7edeb4d485003ca85ff14abf1c73 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 1264199ae3d27be74dbbcd29afd9134b7c3eacc6..4f0d6c81dc206376671fb5819106e59ee46d36f8 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 1ee562c5a5cee3c1dd775412e507d00a605c032f..e9f68c7d5db67176ee573d3a04b25b736f346dd9 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 e8d0a85c2c1641ef34becdcca91c5a0e626ca295..34eba32d8f1075d6f5559b05e014852ac4f286a9 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 fcb6aa5566104a589e277377b37136a4196dc79f..c3a2599bf8c879658db676dfe5f8eade61801162 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 ecf45aba3898c05950b9d917d867347c9cceeb45..08363293d4071e6f598ac17c1cfadb0194d2dae9 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 6abd385a3503c7912a9e5e70dc1ebde0e7a2c991..8268cbf669e4428dd4bc08138a7befc0a7bcc4d0 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 749e4d3a6c2237315fcffc5fec8523b47d9b9bf4..6fe301dab0283bd86c5a72d7921a75b6ee9fb0fa 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 c0cd39e86d5a9153bc187d36a457d8b2d6e17cfc..4485c4606209a886b8dbae6e448386ac07dc0b98 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 60888e0007402ff108e4ef8098f098a1c0f20023..84e29d51d5ab92a8414b65da02269d45c01faf24 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 c397eff4e87da462f090ea49579eb10eecbcf2f4..d7ed337aef8b14b94554e4d91fe8dfbd87f09a87 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 a6ba2a75ecbb991d53b398deb984c8f10565a054..033029fa12c94c49a75b29c65c7d0bca69d71b82 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 bcdf91fb1eeb996545bbdb527b29176faa5e67da..1cccf2166e15fc8f17c2edb9e72b877c7bb92015 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 b438b56450e7193c4a781a35aa3f4bdb60a54ba7..f02c6bf67bd0f9f12c440aafd1554082e5acecfe 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 b32a0eb15e403a6f9e224c06d1bdfd76efe9c905..1a84121fd9ca07aa22373ca8eaf0ce4b27f5abd9 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 b56b2333eb892ea9f077222041b15ebef96df801..a7b0680c1df1edd232458b9404daaf6797eed899 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 e91bf82c8bd32661f73ef0c9922d471c699db477..fbffd031cc8dda0f31b433e32ec990f8b10a6355 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 ed94cac5c0a45b7570aa25c4a8339140de0c3043..c1685fcb016cf6694523946cc389895affa0d119 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 b96dc3b460cba1e42b3f33ca61c8c13efb6d3c9f..3a9538711c20b19b87e85de9ceed90da70bde5d0 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 60c52cb088ba4d3cc034505dc0281a5e767f4443..6c4c3d7691a65431a14a6cc5a1b9819514350d77 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 3766f2ab9f0fc75e4aa57275dff6e5133effc809..7fdd12722e75e78bbcef89939fd92abc11f80202 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 00da4236642ccdc90e093d09fca78e0b86dabf3d..5d6195afbbf820b62baf1f68d54e1c38d3ed40f3 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 98556ba4bd6946cd4e5ef60f97da2e5e33640481..caf9f52867df9976ec9ddcf1f5ea661b73baa744 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 1a3f3404e192a5bcf672ddd10da6534b7c926d42..93d2ea6e0ba0ef1e7601a628fec0d898af6950da 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 9df9406663cb1bcd020efea4929527b51a716bb0..4412bdcb621d32909dbf0d9ce6f217def575f911 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 e7d3c3b17e22655d88c2e4173bb4e60bf5e944c0..8ea3d806382b35103b13567c65c3157d9694a0eb 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 4da7075f424f14dea75eafdbbaecf762e9df7f65..a5f477b4745d5de9ab522ff50d896666e3d2fc6e 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 44e7ce2fdb732b4c94285788168acd13d60c6d73..b462cde0978258cce9f3b868960ed53a58799b66 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 fb4bf57019d6e6d959fa1f819dee8196f2106404..9e85224f09ee9f5046be136a6aa7d36d96439341 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 e06ce36e03d934eb290de4d1ace8894f489d6225..755d7de15fd9dca55910aa84996b0b8f5585af1e 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 ec66e5a6657c7546c06a300f1db93355f09b0ece..c06be0e03f13f9c7d31f910209b412488da2897b 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 eb819c4dbacae6721da7ea6f516a7ae5f1451db8..4d946c98bcd172fd7f51b1a6629d9b2b0bd7bbb8 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 0e10ba1e1e2dbb0176be07f20ebad5941671190f..de00b86d0e9dda604ba3a6bcbaccbca78206bd3b 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 06b009cf2335a36d3f8b8f6f842c70c658c428e0..7dcdcc31e7de71ce48c7175274e3e43fe61fd8d9 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 7fe0d865f409bde3e4b97118f19a52a4f2b1ce67..25f868e3e8a976a00254c7d7cefc0dc83ccefe34 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 8e4d501067dff49d22010e6c600da52204ac6397..45b72bbe1490b1d2445ca4191a1fed9b230e5364 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 f4ee0e4258392c629bea535a2a7d5c4d54b42577..5129e06e2cb8d7577eba40a2e673b1e299466db4 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 27a87abfe536777bf1b5a62a8294ce5bd1e65aac..e1bbc378dcd287bce28dd6e8fd04dead6a0a6335 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 8f7efc8390dde4b06e538e70559fb8b7c7d81b20..cba95c17c13d5ded85807f27402297d21ae18948 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 24fe85ead0ed08cbf7c57aade537cb8f10ca4e08..0b0b2becfe78cdeb4d721001218f1d9b0b2b2e3d 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 ff3ead687b9a01ee574f53d3dfbdc245f9dc1b4e..0cb7b7c31ba4a80971a814da690f128c51f449c2 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 7d88c6569208dfd2484f36a93a9222a43f2d6ea7..ed53e5efae9f2026b875606853877e1c0e87391e 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 9b0359ac7a43654d440dcd1fd01c43bd0db6a267..fbbbb83a610351bb89e4829e7da2671d2f9ccaa2 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 122f87774de48e987d0c71d3a70528231e7756f0..ac6eea9241420555ef44b9234e02c18128296631 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 14b11b713590d174554b82c2baf99822a7dafdf5..172a1905e0b3d2b92dbdb58ce46f875576c4a2ce 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 ace649ef6bc14167715cd7107ce44212c0bde524..de3eaa35341fee501c32e75cf26a92cff74c9e90 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 4c025972f59c29aa9cc4231ec7322fdc850116f0..89358e9134664ea781ca9e8d90269b9b0f3c30b4 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 064f3db60bd351b4e261cb41918750ae737bd834..195ddd7868638a696826737e5d16b923a2b9fa5f 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 04798223e6ebe33a939402fce54be843b8950378..b96cb232ecf0ec1df36071bd74b7468b10ea471f 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 8045f4f6f205034992fc6f1e96cfa1efb83a3a0e..a31f9e41d4164c40f6c5d66e54dc0d082c0747fc 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 40c2913349e358f7931b09c6ba9fee6531480c0e..04fd4e8970034ab19bcdf69c0f690e04a529ce6b 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 ace5be9614663da7626c9365400d4da9d2d74ce9..96adb146d8a16703e6d4ccaed077bed467cef2ca 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 bcfe3363515ab8d9f7a3af3a0185504ea616f689..9b18e0cfd68cb571bbb89f16a70710e49b823010 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 b099fcc0d686906360a004701dee04ce741003df..897c504d24b4a0afadf4e60b9015e40191b7cfc5 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 5c7136a4b4fe0afdf301974ca3da917122b95274..c62a892d146a4d0159dbf6163b66b844376e0fb9 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 6c08442d56a7b9809c575e43d07615d66e11e77c..53acc464e5def61cfbfc2f67a8f73cca96959646 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 f3c7794fb28bfe4091986e6c6cfcc05b9c373a09..342be4a5f9b10fdc57108fe92d52cedb34e3503b 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 749e752030ce9df8593dbd7974a1b5d79ee25674..d5777b17d2a3f4c5ec4cae357b00af257624ab9c 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 76dd875b8c036508c8ae4f0b1cef244233e53e1f..cb4a091174aef47581974b3ad7fe1652b186bb4f 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 957fe82de1b75b584a7cf19e886e03293177e02b..42faa62ecd4fbfb840cbdc884d6fa9b6c42a620a 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 0743e19b56a990a6a345cbf7aa9d44687d4ea913..5d08f90adf8c7e514bfd6bba7da32fa8636f6308 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 f545412dcaa90b9ecffb44fdaadbc12d4bbf0a86..df7a1112c312924b4bb3e85ce8c63584b3a2a769 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 bbed561102f55facbea78135287e179b6d082e23..ea580455ea5ab0540ba4588cfb066dc2fde30d7b 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 6b7844e29d36119523d600620e2b31b94afb1282..a225b4dedd119841641090d724edb41e7ece18a5 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 7344df34c77c768b8d8695d0741b0e81c6de93f0..8f5cb86b87a7e2094165b9d2c7e68840d54f44da 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 3291875d4b02becb6f995d6b65a61e3b8ad9d660..e7d20c8f465fa5ead02c18c4296689de6bc67a72 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 e8b316cced9214f571d6ede23b5feaac1eb8faae..bd1728cbdbc015eff3db98c91c18af736c6ec7d5 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 1aedd2b36ed0e80739e94078f6a4c01dc9fe48dd..66ca0f4f066f879a778d034bb4a6b81eb8e037bc 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 af9efc8875eecadf517cc9f44e12a71e5d87a5cf..345b5f8d02062c678581ecaebce61e9fc3701e77 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 0a62ef2310adc4bd65e7bef2a802aa655f168840..18531bd0f9d35d4bb4eba0ed4cc4d494ea6a8b6b 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 2aeb7827a85283a0cfc6a20ed03b01a505003a29..b59332ca54f1ac159bf8d18dc7990679c0c4e2bf 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 04abec388346c104c6b47b644db2fb0b283aca1e..e2819a73efa7ca83f23f4d8aaf5a402496ca5b5f 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 989d4001317caad6e07bda09f139e87187e59bf8..ef30e6bb8d100c9f5706699939cf83dbe92bdda9 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 fd139b89d5b1a102377cd8797675a44f400a2d0c..3cc60dd9662b5f049c62b60fc3e3f74dd14e7287 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 c56d04a1383a9f118a5ff8017d7d6fa746a30e26..7895d2c6c1f6c552a7829c6954c4079c0acb89f7 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 ed1114228f34867255a09f211ab534ca1e2a1bd1..4584c5c90ca410545f4ae29ca5c94bfc9099749e 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 5e71bc183e5e2ef298093978f3ab286ca461feaa..7f7a22647346403737ce639578299977a763cee8 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 e9cee5f628cc2423f1b88a88edfdd440d7e1eb13..200edf42e7c765dc92488b14fcddaee1a6122946 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 91c8258f8b5d1d9f1dd1358ea59b0f2c6dec0819..159c6eeb2f215a44e0225c48e7e509f8bf7cbf8b 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 1d2a6bc3a098a532e00d6cf510c7c14c715e9b8d..428ef5a9dd84d16d06fbc7462d84d8cd5ce48364 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 3fd275289ab6d0216004d206ba5e29ab008f5183..64efa4e1a210ec4d7371d70ba374a8d18dd000f8 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 f6e29e85ec5e7eac591f2c61e8138fd19a14b5b0..8fe9d99a49ebada60ea0a66b65431129444a2891 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 41b136b6f847988ce9db5bd7b357eb0ab11acd94..1fb2015bb9030e60a9b1534fce38d3acff2e1a82 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 da9fe53abf932cb842cf47e31fd4b09d9abe9242..d1758340ce56a0e2b85af27c71987366ffd503ba 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 7ab29703b2187f69115182f4abf9c2b24f13eed8..dc4b68dc02adae7e34dc3c1286c20052c0f14b4a 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 90da420a017bff4e33c9774e0b9e4d9cf69f6f7d..099ba3179f8bd90d7f73631a7d5e523f9de33df8 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 19549a18b27a6ea2e8ff368b75790f3eb3af5e7b..24c12f6b25ef82e88f16c8975e9168628d7c9252 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 ca9408b6566d86d94e0ff111fea082879670ed82..8b1d2258e3f29d2230b0a1bd3c7d971361fe615d 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 1df28dfc2560c0a58a5ae5e04bb20bbcdfafe00f..122b79f2feeb9ae90c364f816564f163948f175a 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 dbc1b245f1f1daa9d386b972a770d3f158c4bc00..fc052eeff2d394ef3b68c57dd054559574065fab 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 bce7673863509bbacf00ef0fb3c1739f20572cfc..400b1818bbb64d9c444991937000409b5642fab1 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 98b3424c6c76ed104cba1a889eb1f4dda6fd1677..faef31545059068e27c46e145f1260bbb175eb48 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 e84b73a338ef041e23b129bfaaec3bcf9e0b2644..47db3f93c12aad1b95556e4974622e104a053abe 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 9d50aec4f3845abf3477ce5c51572e0b9dbc4daf..20e82d8e3148d313578b559eda19f3c77c46c2d3 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 91998eb295ed779e9c27b95c041553dd4c2fc735..f75b594b7ee7d0ce85da4f5ae790aec261f44d8e 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 61dd66012b0362445aa936369c082836c74e3065..888955880c81f65e40f04a5f486801661bfa8a07 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 0a780ca053e4523ad53eb52d257e9008da0d6a26..ca0e2cb24db4803cfb0301df41780299a309b19b 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 16796f441c2343c8934f4ef7033865967aa77e98..a82ade379b356dd7dc40911c7f902cb0189a665d 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 6f02fd445cb5a62743e8837fede983bbed81cbcd..14c8e99a0fbac6d4bd369bedb2b056c58f75d08f 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 ba4e1a403fcaa4f4507e0d110bfbdf5f5fd9e989..b930b7a4c0f712f09e3393efecdc0b5491054ba6 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 b80ff5dc72f76f22643172e5e970a0e37f8704bd..c04b1ae4f4bc7817ea7c062e5c338d41b33bf87d 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 444232ec5dece33dbcefe04cff42058bf2fcbdb8..1f9553b7a6494ffecc63c9b20f78e7f216cb4c9c 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 72f23a1d18ffd1f2da3a9efa57db060d68af6fb6..d0e54cdb75e48ea9926687f9e43d6526a0697561 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 632c94811ebbfec8e4251ac18fd7f5ffdf5add93..d4a6221a26422d965e8261d685e0e954ce7c52c1 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 3a386138572658c8f99bd32f1a13ea8538b8ba6b..e9a8a2a2435a9a01212e92b3e90c7aeb55ed1801 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 63788afc0f7a69e6cddcce87bb519619876a84f0..425a7c6a61bba15b254e95394c349d2eaee5b6be 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 950fba740f4030e3504187495e255232387d25aa..3c359614c0e680bd6fb01522f9a772fc3a6c413b 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 43ed6583d3d3a4edd7629d6d0341fc8ee89d941b..1ed58b73fc4ea4f3b19d7d0ac1914b0b6bae188d 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 59f95a6c408693b2b9a6b357627fb6dee3efc94f..c13b610d77e5af548370587b8da56fd572fd3c33 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 eb6917ccde265f3e2db952f0ebe17b7336a412d0..8863b6b38dddbc992285ca4bbf00860fee71976c 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 efe0973272484c312bb334b8158d1adb3a11fc00..96d73e6002e2b6d565d46181ff5598fe3968ec0d 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 43f3b465f76dda91589f0eb46ddd880b9d5546fd..e59c25c52f879cc8a16a7e6fc67b0488025b9f60 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 459118f3c53b79f173a67f5b9db72998d8026b99..7dce7319b7dc6d2d092c3f28b745dfb8b851fa49 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 dc514733768454d37d7d959c0d2138aae0d20c27..415294f82058ba60650dcb56a55bbc917e963b30 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 3edbd680b4cb59440f86e65de33b06a54c93aaaf..f6ef912cf104bda68b689f74e56f553cc8f5b34a 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 e7af4d96ccaf571591f3860e88f18613653871bf..1908d748769a8727f1ec8bc82122a6c0fddbeef1 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 fa51c0e25b50301f7fd090aac5747b66b064d91f..8795d9a056ad59af0e61791aabbfc64fcda73fe9 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 234cd7593eb274aa3d5926df214d6eb256c7ee4c..f6f66c910977845c0ddc5750465de4ad67e4793c 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 a2e39d124a1f83fa20c71e551bcbdc7d3a609165..546f4c0c708a89d263844f5334ca1d49f6ae4792 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 f0344bb26ec40c7fe2374db671006ca99556e078..503aea9b4be3c0d59c9840ce0e5f8d5d4a67ca48 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 0cd339f8a44c405b82edbf31126fc37de7b07262..89efdb1acd82d1e0ae7238cc49fa7e3dde601ee6 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 e66e09dd6b5d6c35ab7f3ad8eb5e3b08d8055794..d6a7dcaceba13b6c333bc244e446224658e280c2 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 baa73b9a7e1bc541345dc3505137f44c8a0a93f8..5bfa34ff07579859a289a5e7ad78aa5eb02bae88 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 6635c18cc1aca52191c998372826a14f2b2fb6c1..12ac7b3d8107b2724dfe1141687063ae7fd8f7c1 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 0e49f17e97b6e5f2b96e7a95b77dd0c14c844b47..f0ab45b37acfa8d0c8464e8d1df747af2490e34e 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 53cc873524c4fa6692ff0d00551159f87ed61239..ea13a559b15e09cb3fd7e09cb4b58c637cd8d4ff 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 beac8d856ca640a25f83effa6db7322370568f75..8e30688b972eefb925389c533556973a9c6751f2 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 56f598f9dcb26c43330a84bb35722f586244c0bd..6b83b9533da49ddf8838b034cdaf43f68aa75a8f 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 770bab3432a0976451e9429344a1801b19f1056e..8b753da1bc2a4326a3e7dcdfdbf42c2d00b85e95 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 f81a458863ee7414c735e93b53143823f8876618..cd488bd7e84075b8208cce2356925070972fcf20 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');
diff --git a/test/built-ins/Date/prototype/setFullYear/15.9.5.40_1.js b/test/built-ins/Date/prototype/setFullYear/15.9.5.40_1.js
index e59716558180caa0d8d6edf0b02bace9c19852e2..12f5f6ca03c543e8c09049a342f0840c2ffad982 100644
--- a/test/built-ins/Date/prototype/setFullYear/15.9.5.40_1.js
+++ b/test/built-ins/Date/prototype/setFullYear/15.9.5.40_1.js
@@ -6,17 +6,9 @@ es5id: 15.9.5.40_1
 description: >
     Date.prototype.setFullYear - Date.prototype is itself not an
     instance of Date
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
-    try {
+
+assert.throws(TypeError, function() {
         Date.prototype.setFullYear(2012);
-    } catch (e) {
-        if (e instanceof TypeError) {
-            return true;
-        }
-    }
-    return false;
-}
-runTestCase(testcase);
+});
diff --git a/test/built-ins/Date/prototype/toISOString/15.9.5.43-0-14.js b/test/built-ins/Date/prototype/toISOString/15.9.5.43-0-14.js
index 994077732b898ed54a81229552d4c0c50c172196..15456f9e8919cf931dd9ce42302b88372695776a 100644
--- a/test/built-ins/Date/prototype/toISOString/15.9.5.43-0-14.js
+++ b/test/built-ins/Date/prototype/toISOString/15.9.5.43-0-14.js
@@ -6,16 +6,9 @@ es5id: 15.9.5.43-0-14
 description: >
     Date.prototype.toISOString - when value of year is -Infinity
     Date.prototype.toISOString throw the RangeError
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
         var date = new Date(-Infinity, 1, 70, 0, 0, 0);
-
-        try {
+assert.throws(RangeError, function() {
             date.toISOString();
-        } catch (ex) {
-            return ex instanceof RangeError;
-        }
-    }
-runTestCase(testcase);
+});
diff --git a/test/built-ins/Date/prototype/toISOString/15.9.5.43-0-15.js b/test/built-ins/Date/prototype/toISOString/15.9.5.43-0-15.js
index 6ee03b89688d6af63d554eb57895a098a8902410..05354da62eafbd579fb1cf92a27e597af2845a89 100644
--- a/test/built-ins/Date/prototype/toISOString/15.9.5.43-0-15.js
+++ b/test/built-ins/Date/prototype/toISOString/15.9.5.43-0-15.js
@@ -6,16 +6,9 @@ es5id: 15.9.5.43-0-15
 description: >
     Date.prototype.toISOString - value of year is Infinity
     Date.prototype.toISOString throw the RangeError
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
         var date = new Date(Infinity, 1, 70, 0, 0, 0);
-
-        try {
+assert.throws(RangeError, function() {
             date.toISOString();
-        } catch (ex) {
-            return ex instanceof RangeError;
-        }
-    }
-runTestCase(testcase);
+});
diff --git a/test/built-ins/Date/prototype/toISOString/15.9.5.43-0-16.js b/test/built-ins/Date/prototype/toISOString/15.9.5.43-0-16.js
index d2617ef3304d8fbdeb43654e360ae08d72d24a6f..702a62b345c577eac238a357ca6b94fe4eb199fa 100644
--- a/test/built-ins/Date/prototype/toISOString/15.9.5.43-0-16.js
+++ b/test/built-ins/Date/prototype/toISOString/15.9.5.43-0-16.js
@@ -7,17 +7,9 @@ description: >
     Date.prototype.toISOString - when this is a String object that
     value format is 'YYYY-MM-DDTHH:mm:ss.sssZ'
     Date.prototype.toISOString throw the TypeError
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
         var date = new String("1970-01-00000:00:00.000Z");
-
-        try {
+assert.throws(TypeError, function() {
             Date.prototype.toISOString.call(date);
-            return false;
-        } catch (ex) {
-            return ex instanceof TypeError;
-        }
-    }
-runTestCase(testcase);
+});
diff --git a/test/built-ins/Date/prototype/toISOString/15.9.5.43-0-6.js b/test/built-ins/Date/prototype/toISOString/15.9.5.43-0-6.js
index a7bb22a7d111ba766aa4c777aa8c131933470bf6..1e9ff353ecc875a2fd0b60f002f2ba8f0d9b1e38 100644
--- a/test/built-ins/Date/prototype/toISOString/15.9.5.43-0-6.js
+++ b/test/built-ins/Date/prototype/toISOString/15.9.5.43-0-6.js
@@ -6,16 +6,9 @@ es5id: 15.9.5.43-0-6
 description: >
     Date.prototype.toISOString - TypeError is thrown when this is any
     other objects instead of Date object
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
 
-        try {
+assert.throws(TypeError, function() {
             Date.prototype.toISOString.call([]);
-            return false;
-        } catch (ex) {
-            return ex instanceof TypeError;
-        }
-    }
-runTestCase(testcase);
+});
diff --git a/test/built-ins/Date/prototype/toISOString/15.9.5.43-0-7.js b/test/built-ins/Date/prototype/toISOString/15.9.5.43-0-7.js
index ba755534fccb5b4b1b1e9f3a2b301702223ad6e2..e823181cdf4ee513e71fc46bb3345966bced7ba6 100644
--- a/test/built-ins/Date/prototype/toISOString/15.9.5.43-0-7.js
+++ b/test/built-ins/Date/prototype/toISOString/15.9.5.43-0-7.js
@@ -6,16 +6,9 @@ es5id: 15.9.5.43-0-7
 description: >
     Date.prototype.toISOString - TypeError is thrown when this is any
     primitive values
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
 
-        try {
+assert.throws(TypeError, function() {
             Date.prototype.toISOString.call(15);
-            return false;
-        } catch (ex) {
-            return ex instanceof TypeError;
-        }
-    }
-runTestCase(testcase);
+});
diff --git a/test/built-ins/Date/prototype/toISOString/15.9.5.43-0-8.js b/test/built-ins/Date/prototype/toISOString/15.9.5.43-0-8.js
index 454d97a480c304c08918b70fc6c5774d20fafa09..f4bd717fc93398c1d014c7bb133eee201bac4cf6 100644
--- a/test/built-ins/Date/prototype/toISOString/15.9.5.43-0-8.js
+++ b/test/built-ins/Date/prototype/toISOString/15.9.5.43-0-8.js
@@ -7,13 +7,11 @@ description: >
     Date.prototype.toISOString - RangeError is thrown when value of
     date is Date(1970, 0, -99999999, 0, 0, 0, -1), the time zone is
     UTC(0)
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
         var timeZoneMinutes = new Date().getTimezoneOffset() * (-1);
         var date, dateStr;
-        try {
+assert.throws(RangeError, function() {
             if (timeZoneMinutes > 0) {
                 date = new Date(1970, 0, -99999999, 0, 0, 0, -1);
             } else {
@@ -21,10 +19,4 @@ function testcase() {
             }
 
             dateStr = date.toISOString();
-
-            return false;
-        } catch (e) {
-            return e instanceof RangeError;
-        }
-    }
-runTestCase(testcase);
+});
diff --git a/test/built-ins/Function/15.3.2.1-11-1-s.js b/test/built-ins/Function/15.3.2.1-11-1-s.js
index 5c9bdd7872f7b314a047da97ec30a52868f5e6a3..e03cedaf5dd3e58db054551fdded267f8c1b4b64 100644
--- a/test/built-ins/Function/15.3.2.1-11-1-s.js
+++ b/test/built-ins/Function/15.3.2.1-11-1-s.js
@@ -7,17 +7,9 @@ description: >
     Duplicate seperate parameter name in Function constructor throws
     SyntaxError in strict mode
 flags: [noStrict]
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {   
-  try {
+   
+assert.throws(SyntaxError, function() {
     Function('a','a','"use strict";');
-    return false;
-  }
-  catch (e) {
-    return (e instanceof SyntaxError);
-  }
-  
- }
-runTestCase(testcase);
+});
diff --git a/test/built-ins/Function/15.3.2.1-11-3-s.js b/test/built-ins/Function/15.3.2.1-11-3-s.js
index 371f41b64e245df72bb58a73ce4de0667aa20078..29adf517de48dac978b3ee57b75c756fdf6bf6e0 100644
--- a/test/built-ins/Function/15.3.2.1-11-3-s.js
+++ b/test/built-ins/Function/15.3.2.1-11-3-s.js
@@ -7,18 +7,9 @@ description: >
     Function constructor having a formal parameter named 'eval' throws
     SyntaxError if function body is strict mode
 flags: [noStrict]
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
-  
 
-  try {
+assert.throws(SyntaxError, function() {
     Function('eval', '"use strict";');
-	return false;
-  }
-  catch (e) {
-    return (e instanceof SyntaxError);
-  }
- }
-runTestCase(testcase);
+});
diff --git a/test/built-ins/Function/15.3.2.1-11-5-s.js b/test/built-ins/Function/15.3.2.1-11-5-s.js
index 7565db70b41878ce713ab138c554519ffbe5d4a9..00db23462018e5271a78db155da357a03393ca6f 100644
--- a/test/built-ins/Function/15.3.2.1-11-5-s.js
+++ b/test/built-ins/Function/15.3.2.1-11-5-s.js
@@ -7,18 +7,9 @@ description: >
     Duplicate combined parameter name in Function constructor throws
     SyntaxError in strict mode
 flags: [noStrict]
-includes: [runTestCase.js]
 ---*/
 
-function testcase()
-{   
-  try 
-  {
+   
+assert.throws(SyntaxError, function() {
     Function('a,a','"use strict";');
-	return false;
-  }
-  catch (e) {
-    return(e instanceof SyntaxError);
-  }
- }
-runTestCase(testcase);
+});
diff --git a/test/built-ins/Function/prototype/bind/15.3.4.5-2-1.js b/test/built-ins/Function/prototype/bind/15.3.4.5-2-1.js
index 94a9fcf63181a4296e13e9ec1a3e28f25acd5973..3ac890d0442b671b0bf9c16d0151805581cdacd9 100644
--- a/test/built-ins/Function/prototype/bind/15.3.4.5-2-1.js
+++ b/test/built-ins/Function/prototype/bind/15.3.4.5-2-1.js
@@ -9,22 +9,12 @@ es5id: 15.3.4.5-2-1
 description: >
     Function.prototype.bind throws TypeError if the Target is not
     callable (but an instance of Function)
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
   foo.prototype = Function.prototype;
   // dummy function
   function foo() {}
   var f = new foo();
-
-  try {
+assert.throws(TypeError, function() {
     f.bind();
-  }
-  catch (e) {
-    if (e instanceof TypeError) {
-      return true;
-    }
-  }
- }
-runTestCase(testcase);
+});
diff --git a/test/built-ins/Function/prototype/bind/15.3.4.5-2-10.js b/test/built-ins/Function/prototype/bind/15.3.4.5-2-10.js
index 644b87b3fedb5ee682df285e73d067c85b5f4dea..b7cc355aa4a509948ea65f860b23f4ca5a83a1ce 100644
--- a/test/built-ins/Function/prototype/bind/15.3.4.5-2-10.js
+++ b/test/built-ins/Function/prototype/bind/15.3.4.5-2-10.js
@@ -4,15 +4,9 @@
 /*---
 es5id: 15.3.4.5-2-10
 description: Function.prototype.bind throws TypeError if 'Target' is undefined
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
-        try {
+
+assert.throws(TypeError, function() {
             Function.prototype.bind.call(undefined);
-            return false;
-        } catch (e) {
-            return (e instanceof TypeError);
-        } 
-    }
-runTestCase(testcase);
+});
diff --git a/test/built-ins/Function/prototype/bind/15.3.4.5-2-11.js b/test/built-ins/Function/prototype/bind/15.3.4.5-2-11.js
index 1e3c66fc1de10c98c8916e50df51b3c863a451eb..a6b2d253652de4423a0e8cd925c3324b2aebd6d6 100644
--- a/test/built-ins/Function/prototype/bind/15.3.4.5-2-11.js
+++ b/test/built-ins/Function/prototype/bind/15.3.4.5-2-11.js
@@ -4,15 +4,9 @@
 /*---
 es5id: 15.3.4.5-2-11
 description: Function.prototype.bind throws TypeError if 'Target' is NULL
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
-        try {
+
+assert.throws(TypeError, function() {
             Function.prototype.bind.call(null);
-            return false;
-        } catch (e) {
-            return (e instanceof TypeError);
-        }
-    }
-runTestCase(testcase);
+});
diff --git a/test/built-ins/Function/prototype/bind/15.3.4.5-2-12.js b/test/built-ins/Function/prototype/bind/15.3.4.5-2-12.js
index 7705c30cbf745312f0a3497e00aa98068cc8510c..ac81d90cbb707d03c771b8a171c972af12fa9f32 100644
--- a/test/built-ins/Function/prototype/bind/15.3.4.5-2-12.js
+++ b/test/built-ins/Function/prototype/bind/15.3.4.5-2-12.js
@@ -4,15 +4,9 @@
 /*---
 es5id: 15.3.4.5-2-12
 description: Function.prototype.bind throws TypeError if 'Target' is a boolean
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
-        try {
+
+assert.throws(TypeError, function() {
             Function.prototype.bind.call(true);
-            return false;
-        } catch (e) {
-            return (e instanceof TypeError);
-        } 
-    }
-runTestCase(testcase);
+});
diff --git a/test/built-ins/Function/prototype/bind/15.3.4.5-2-13.js b/test/built-ins/Function/prototype/bind/15.3.4.5-2-13.js
index 08f26ba47a13ca88f6c3ab230fa236808b16b59a..0745139ad95721b9de8fd3dd6bfabbc750e640c7 100644
--- a/test/built-ins/Function/prototype/bind/15.3.4.5-2-13.js
+++ b/test/built-ins/Function/prototype/bind/15.3.4.5-2-13.js
@@ -4,15 +4,9 @@
 /*---
 es5id: 15.3.4.5-2-13
 description: Function.prototype.bind throws TypeError if 'Target' is a number
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
-        try {
+
+assert.throws(TypeError, function() {
             Function.prototype.bind.call(5);
-            return false;
-        } catch (e) {
-            return (e instanceof TypeError);
-        }
-    }
-runTestCase(testcase);
+});
diff --git a/test/built-ins/Function/prototype/bind/15.3.4.5-2-14.js b/test/built-ins/Function/prototype/bind/15.3.4.5-2-14.js
index c32540e81d212b68718a626751445ae7a4a3d3df..64b0899f799f97b978aab5cb51edba24c660bdb8 100644
--- a/test/built-ins/Function/prototype/bind/15.3.4.5-2-14.js
+++ b/test/built-ins/Function/prototype/bind/15.3.4.5-2-14.js
@@ -4,15 +4,9 @@
 /*---
 es5id: 15.3.4.5-2-14
 description: Function.prototype.bind throws TypeError if 'Target' is a string
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
-        try {
+
+assert.throws(TypeError, function() {
             Function.prototype.bind.call("abc");
-            return false;
-        } catch (e) {
-            return (e instanceof TypeError);
-        }
-    }
-runTestCase(testcase);
+});
diff --git a/test/built-ins/Function/prototype/bind/15.3.4.5-2-15.js b/test/built-ins/Function/prototype/bind/15.3.4.5-2-15.js
index 1d7ce26198e3786516b101f381f5749682b157eb..887441b2cf64e2eb8d4ff51196f3cad6ea90297b 100644
--- a/test/built-ins/Function/prototype/bind/15.3.4.5-2-15.js
+++ b/test/built-ins/Function/prototype/bind/15.3.4.5-2-15.js
@@ -6,15 +6,9 @@ es5id: 15.3.4.5-2-15
 description: >
     Function.prototype.bind throws TypeError if 'Target' is Object
     without Call internal method
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
-        try {
+
+assert.throws(TypeError, function() {
             Function.prototype.bind.call({});
-            return false;
-        } catch (e) {
-            return (e instanceof TypeError);
-        }
-    }
-runTestCase(testcase);
+});
diff --git a/test/built-ins/Function/prototype/bind/15.3.4.5-2-2.js b/test/built-ins/Function/prototype/bind/15.3.4.5-2-2.js
index c4b8608d9d86e4220e4d2d2215d7cfb1eb8dab60..c88738b1d737fdd6914acdab669bfd6667640f14 100644
--- a/test/built-ins/Function/prototype/bind/15.3.4.5-2-2.js
+++ b/test/built-ins/Function/prototype/bind/15.3.4.5-2-2.js
@@ -9,22 +9,12 @@ es5id: 15.3.4.5-2-2
 description: >
     Function.prototype.bind throws TypeError if the Target is not
     callable (bind attached to object)
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
   // dummy function 
   function foo() {}
   var f = new foo();
   f.bind = Function.prototype.bind;
-
-  try {
+assert.throws(TypeError, function() {
     f.bind();
-  }
-  catch (e) {
-    if (e instanceof TypeError) {
-      return true;
-    }
-  }
- }
-runTestCase(testcase);
+});
diff --git a/test/built-ins/Function/prototype/bind/15.3.4.5-2-7.js b/test/built-ins/Function/prototype/bind/15.3.4.5-2-7.js
index 3cb325d59672c79df5ec0bd1cfcf0228fd2bda3e..2e6d92fddda5c13271f8698ee79c2066fd661a5f 100644
--- a/test/built-ins/Function/prototype/bind/15.3.4.5-2-7.js
+++ b/test/built-ins/Function/prototype/bind/15.3.4.5-2-7.js
@@ -9,17 +9,9 @@ es5id: 15.3.4.5-2-7
 description: >
     Function.prototype.bind throws TypeError if the Target is not
     callable (JSON)
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
-  try {
+
+assert.throws(TypeError, function() {
     JSON.bind();
-  }
-  catch (e) {
-    if (e instanceof TypeError) {
-      return true;
-    }
-  }
- }
-runTestCase(testcase);
+});
diff --git a/test/built-ins/Function/prototype/bind/15.3.4.5-20-3.js b/test/built-ins/Function/prototype/bind/15.3.4.5-20-3.js
index aed56b32a8aa0ca02445bf5b1e27d36904763451..15516ceb6babf805756646ccf21500f3a3244829 100644
--- a/test/built-ins/Function/prototype/bind/15.3.4.5-20-3.js
+++ b/test/built-ins/Function/prototype/bind/15.3.4.5-20-3.js
@@ -6,18 +6,10 @@ es5id: 15.3.4.5-20-3
 description: >
     Function.prototype.bind - [[Set]] attribute of 'caller' property
     in  'F' is thrower
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
-
         function foo() { }
         var obj = foo.bind({});
-        try {
+assert.throws(TypeError, function() {
             obj.caller = 12;
-            return false;
-        } catch (ex) {
-            return (ex instanceof TypeError);
-        }
-    }
-runTestCase(testcase);
+});
diff --git a/test/built-ins/Function/prototype/bind/15.3.4.5-21-3.js b/test/built-ins/Function/prototype/bind/15.3.4.5-21-3.js
index 1f5ea8acea37c977767ec8bfabf01897c246fc90..c132f9d0960da434b8064496b4e8fc3fc26fee1a 100644
--- a/test/built-ins/Function/prototype/bind/15.3.4.5-21-3.js
+++ b/test/built-ins/Function/prototype/bind/15.3.4.5-21-3.js
@@ -6,18 +6,10 @@ es5id: 15.3.4.5-21-3
 description: >
     Function.prototype.bind - [[Set]] attribute of 'arguments'
     property in  'F' is thrower
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
-
         function foo() { }
         var obj = foo.bind({});
-        try {
+assert.throws(TypeError, function() {
             obj.arguments = 12;
-            return false;
-        } catch (ex) {
-            return (ex instanceof TypeError);
-        }
-    }
-runTestCase(testcase);
+});
diff --git a/test/built-ins/JSON/15.12-0-2.js b/test/built-ins/JSON/15.12-0-2.js
index b0623f88f84cb69a831904835358fbd2b17f1023..7b70edabf986287c664fda00825d126b35406ec5 100644
--- a/test/built-ins/JSON/15.12-0-2.js
+++ b/test/built-ins/JSON/15.12-0-2.js
@@ -8,19 +8,9 @@ info: >
     step 4 in 11.2.2 should throw a TypeError exception.
 es5id: 15.12-0-2
 description: JSON must not support the [[Construct]] method
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
   var o = JSON;
-
-  try {
+assert.throws(TypeError, function() {
     var j = new JSON();
-  }
-  catch (e) {
-    if (e instanceof TypeError) {
-      return true;
-    }
-  }
- }
-runTestCase(testcase);
+});
diff --git a/test/built-ins/JSON/15.12-0-3.js b/test/built-ins/JSON/15.12-0-3.js
index 02a539bedecb212a31f16f476cb28619b96e0b8e..11f3293a8387d77134c794a8c47bcb6da9422eae 100644
--- a/test/built-ins/JSON/15.12-0-3.js
+++ b/test/built-ins/JSON/15.12-0-3.js
@@ -8,19 +8,9 @@ info: >
     step 5 in 11.2.3 should throw a TypeError exception.
 es5id: 15.12-0-3
 description: JSON must not support the [[Call]] method
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
   var o = JSON;
-
-  try {
+assert.throws(TypeError, function() {
     var j = JSON();
-  }
-  catch (e) {
-    if (e instanceof TypeError) {
-      return true;
-    }
-  }
- }
-runTestCase(testcase);
+});
diff --git a/test/built-ins/Object/create/15.2.3.5-1-1.js b/test/built-ins/Object/create/15.2.3.5-1-1.js
index c5e0b426dedee480bdd91b601b5cec79effa016b..dfec5679462324f650a108e3eab8d5ba0e02ee81 100644
--- a/test/built-ins/Object/create/15.2.3.5-1-1.js
+++ b/test/built-ins/Object/create/15.2.3.5-1-1.js
@@ -4,16 +4,9 @@
 /*---
 es5id: 15.2.3.5-1-1
 description: Object.create throws TypeError if 'O' is undefined
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
 
-        try {
+assert.throws(TypeError, function() {
             Object.create(undefined);
-            return false;
-        } catch (e) {
-            return (e instanceof TypeError);
-        }
-    }
-runTestCase(testcase);
+});
diff --git a/test/built-ins/Object/create/15.2.3.5-1-3.js b/test/built-ins/Object/create/15.2.3.5-1-3.js
index 28933d17759298a81f61f0dc42484a8cb2a137b8..2a8aa4b63918e8791c5212788eee6ab9fe52b261 100644
--- a/test/built-ins/Object/create/15.2.3.5-1-3.js
+++ b/test/built-ins/Object/create/15.2.3.5-1-3.js
@@ -4,16 +4,9 @@
 /*---
 es5id: 15.2.3.5-1-3
 description: Object.create throws TypeError if 'O' is a boolean primitive
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
 
-        try {
+assert.throws(TypeError, function() {
             Object.create(true);
-            return false;
-        } catch (e) {
-            return (e instanceof TypeError);
-        }
-    }
-runTestCase(testcase);
+});
diff --git a/test/built-ins/Object/create/15.2.3.5-1-4.js b/test/built-ins/Object/create/15.2.3.5-1-4.js
index 300289d4c12fdb2dd08a57b91c3f515231283c3d..e33ef8ddb4c902a4ddacb2775201a5542eeedfb0 100644
--- a/test/built-ins/Object/create/15.2.3.5-1-4.js
+++ b/test/built-ins/Object/create/15.2.3.5-1-4.js
@@ -4,16 +4,9 @@
 /*---
 es5id: 15.2.3.5-1-4
 description: Object.create throws TypeError if 'O' is a number primitive
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
 
-        try {
+assert.throws(TypeError, function() {
             Object.create(2);
-            return false;
-        } catch (e) {
-            return (e instanceof TypeError);
-        }
-    }
-runTestCase(testcase);
+});
diff --git a/test/built-ins/Object/create/15.2.3.5-1.js b/test/built-ins/Object/create/15.2.3.5-1.js
index 2624275e42e92570ff659c23280f672175eb83d7..645c0c974fe01fb17464c443ff12059a1d641718 100644
--- a/test/built-ins/Object/create/15.2.3.5-1.js
+++ b/test/built-ins/Object/create/15.2.3.5-1.js
@@ -4,17 +4,9 @@
 /*---
 es5id: 15.2.3.5-1
 description: Object.create throws TypeError if type of first param is not Object
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
-    try {
+
+assert.throws(TypeError, function() {
       Object.create(0);
-    }
-    catch (e) {
-      if (e instanceof TypeError) {
-        return true;
-      }
-    }
- }
-runTestCase(testcase);
+});
diff --git a/test/built-ins/Object/create/15.2.3.5-4-258.js b/test/built-ins/Object/create/15.2.3.5-4-258.js
index 9d9132e5af2e483199436ad1eaddbc45fa6ea0a7..e20c4f14b11a22c1bae0660a0b3a2b523b2963dc 100644
--- a/test/built-ins/Object/create/15.2.3.5-4-258.js
+++ b/test/built-ins/Object/create/15.2.3.5-4-258.js
@@ -6,20 +6,13 @@ es5id: 15.2.3.5-4-258
 description: >
     Object.create - 'get' property of one property in 'Properties' is
     the primitive value null (8.10.5 step 7.b)
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
-        try {
+
+assert.throws(TypeError, function() {
             Object.create({}, {
                 prop: {
                     get: null
                 }
             });
-
-            return false;
-        } catch (e) {
-            return (e instanceof TypeError);
-        }
-    }
-runTestCase(testcase);
+});
diff --git a/test/built-ins/Object/create/15.2.3.5-4-259.js b/test/built-ins/Object/create/15.2.3.5-4-259.js
index 6a70c61dc7177d67f907a0c40d0b3b5a53d03952..f4ae695fa8e4e87ca7d63bb5111052609a0e4a15 100644
--- a/test/built-ins/Object/create/15.2.3.5-4-259.js
+++ b/test/built-ins/Object/create/15.2.3.5-4-259.js
@@ -6,20 +6,13 @@ es5id: 15.2.3.5-4-259
 description: >
     Object.create - 'get' property of one property in 'Properties' is
     a boolean primitive (8.10.5 step 7.b)
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
-        try {
+
+assert.throws(TypeError, function() {
             Object.create({}, {
                 prop: {
                     get: false
                 }
             });
-
-            return false;
-        } catch (e) {
-            return (e instanceof TypeError);
-        }
-    }
-runTestCase(testcase);
+});
diff --git a/test/built-ins/Object/create/15.2.3.5-4-26.js b/test/built-ins/Object/create/15.2.3.5-4-26.js
index aecc5f5942393115a6db77a74c7b723e346d4d17..90605aecef37c89df0adeb11545d28086265459c 100644
--- a/test/built-ins/Object/create/15.2.3.5-4-26.js
+++ b/test/built-ins/Object/create/15.2.3.5-4-26.js
@@ -6,22 +6,13 @@ es5id: 15.2.3.5-4-26
 description: >
     Object.create - TypeError is thrown when own enumerable accessor
     property of 'Properties' without a get function (15.2.3.7 step 5.a)
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
-
         var props = {};
         Object.defineProperty(props, "prop", {
             set: function () { },
             enumerable: true
         });
-        try {
+assert.throws(TypeError, function() {
             Object.create({}, props);
-
-            return false;
-        } catch (ex) {
-            return ex instanceof TypeError;
-        }
-    }
-runTestCase(testcase);
+});
diff --git a/test/built-ins/Object/create/15.2.3.5-4-260.js b/test/built-ins/Object/create/15.2.3.5-4-260.js
index 58ea30579cf3ad005b47a4c4ab29ce5bbeadf9be..031bdfd5672e8cf452df647def514e33b767aa9b 100644
--- a/test/built-ins/Object/create/15.2.3.5-4-260.js
+++ b/test/built-ins/Object/create/15.2.3.5-4-260.js
@@ -6,20 +6,13 @@ es5id: 15.2.3.5-4-260
 description: >
     Object.create - 'get' property of one property in 'Properties' is
     a number primitive (8.10.5 step 7.b)
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
-        try {
+
+assert.throws(TypeError, function() {
             Object.create({}, {
                 prop: {
                     get: 123
                 }
             });
-
-            return false;
-        } catch (e) {
-            return (e instanceof TypeError);
-        }
-    }
-runTestCase(testcase);
+});
diff --git a/test/built-ins/Object/create/15.2.3.5-4-261.js b/test/built-ins/Object/create/15.2.3.5-4-261.js
index 7b33457ef80ceea7c22e18c9ab1739d7fa8f4bfc..8a7f3f955b1ed90e917c20f02a55d21a5fa857dd 100644
--- a/test/built-ins/Object/create/15.2.3.5-4-261.js
+++ b/test/built-ins/Object/create/15.2.3.5-4-261.js
@@ -6,21 +6,13 @@ es5id: 15.2.3.5-4-261
 description: >
     Object.create - 'get' property of one property in 'Properties' is
     a primitive string (8.10.5 step 7.b)
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
 
-        try {
+assert.throws(TypeError, function() {
             Object.create({}, {
                 prop: {
                     get: "string"
                 }
             });
-
-            return false;
-        } catch (e) {
-            return (e instanceof TypeError);
-        }
-    }
-runTestCase(testcase);
+});
diff --git a/test/built-ins/Object/create/15.2.3.5-4-262.js b/test/built-ins/Object/create/15.2.3.5-4-262.js
index 1758af3db70cbab250fcc9cf6bde1650a78c8611..f02da1a389243d52573254dd20516c53e4de3d91 100644
--- a/test/built-ins/Object/create/15.2.3.5-4-262.js
+++ b/test/built-ins/Object/create/15.2.3.5-4-262.js
@@ -6,20 +6,13 @@ es5id: 15.2.3.5-4-262
 description: >
     Object.create - 'get' property of one property in 'Properties' is
     an Array object (8.10.5 step 7.b)
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
-        try {
+
+assert.throws(TypeError, function() {
             Object.create({}, {
                 prop: {
                     get: [1, 2, 3]
                 }
             });
-
-            return false;
-        } catch (e) {
-            return (e instanceof TypeError);
-        }
-    }
-runTestCase(testcase);
+});
diff --git a/test/built-ins/Object/create/15.2.3.5-4-27.js b/test/built-ins/Object/create/15.2.3.5-4-27.js
index dba419000c419ca9305bc5331b4f55491cf4b6e7..913f3b4e11837a64e63064401a0041e354fe86db 100644
--- a/test/built-ins/Object/create/15.2.3.5-4-27.js
+++ b/test/built-ins/Object/create/15.2.3.5-4-27.js
@@ -8,11 +8,8 @@ description: >
     without a get function that overrides an enumerable inherited
     accessor property in 'Properties' is defined in 'obj' (15.2.3.7
     step 5.a)
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
-
         var proto = {};
         Object.defineProperty(proto, "prop", {
             get: function () {
@@ -29,13 +26,6 @@ function testcase() {
             set: function () { },
             enumerable: true
         });
-
-        try {
+assert.throws(TypeError, function() {
             Object.create({}, child);
-
-            return false;
-        } catch (ex) {
-            return ex instanceof TypeError;
-        }
-    }
-runTestCase(testcase);
+});
diff --git a/test/built-ins/Object/create/15.2.3.5-4-293.js b/test/built-ins/Object/create/15.2.3.5-4-293.js
index ee4f14993e6bfe4e33641b654894f59288f004ef..b5141d316eb0fa8bc64cade9e13ac36e28153a41 100644
--- a/test/built-ins/Object/create/15.2.3.5-4-293.js
+++ b/test/built-ins/Object/create/15.2.3.5-4-293.js
@@ -6,21 +6,13 @@ es5id: 15.2.3.5-4-293
 description: >
     Object.create - 'set' property of one property in 'Properties' is
     a primitive value null (8.10.5 step 8.b)
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
 
-        try {
+assert.throws(TypeError, function() {
             Object.create({}, {
                 prop: {
                     set: null
                 }
             });
-
-            return false;
-        } catch (e) {
-            return (e instanceof TypeError);
-        }
-    }
-runTestCase(testcase);
+});
diff --git a/test/built-ins/Object/create/15.2.3.5-4-294.js b/test/built-ins/Object/create/15.2.3.5-4-294.js
index 6c9e8c333a35746444d3edb7839a53291fe30a4f..0253d46f9b557c6502ee7d12b839961a65fabee2 100644
--- a/test/built-ins/Object/create/15.2.3.5-4-294.js
+++ b/test/built-ins/Object/create/15.2.3.5-4-294.js
@@ -6,21 +6,13 @@ es5id: 15.2.3.5-4-294
 description: >
     Object.create - 'set' property of one property in 'Properties' is
     a primitive boolean value true (8.10.5 step 8.b)
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
 
-        try {
+assert.throws(TypeError, function() {
             Object.create({}, {
                 prop: {
                     set: true
                 } 
             });
-
-            return false;
-        } catch (e) {
-            return (e instanceof TypeError);
-        }
-    }
-runTestCase(testcase);
+});
diff --git a/test/built-ins/Object/create/15.2.3.5-4-295.js b/test/built-ins/Object/create/15.2.3.5-4-295.js
index 4f5553910b8e1a63c0eb13683a77db0f5f787922..db9776e03704acba8dee2263745e50769bf7d8a7 100644
--- a/test/built-ins/Object/create/15.2.3.5-4-295.js
+++ b/test/built-ins/Object/create/15.2.3.5-4-295.js
@@ -6,21 +6,13 @@ es5id: 15.2.3.5-4-295
 description: >
     Object.create - 'set' property of one property in 'Properties' is
     a primitive number value (8.10.5 step 8.b)
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
 
-        try {
+assert.throws(TypeError, function() {
             Object.create({}, {
                 prop: {
                     set: 123
                 }
             });
-
-            return false;
-        } catch (e) {
-            return (e instanceof TypeError);
-        }
-    }
-runTestCase(testcase);
+});
diff --git a/test/built-ins/Object/create/15.2.3.5-4-296.js b/test/built-ins/Object/create/15.2.3.5-4-296.js
index 9ea966b795fa41bc19558d7f8344a79cd80ef639..9912d08063593b5a18ae5ae0e4d84c4d74f36658 100644
--- a/test/built-ins/Object/create/15.2.3.5-4-296.js
+++ b/test/built-ins/Object/create/15.2.3.5-4-296.js
@@ -6,21 +6,13 @@ es5id: 15.2.3.5-4-296
 description: >
     Object.create - 'set' property of one property in 'Properties' is
     a primitive string value (8.10.5 step 8.b)
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
 
-        try {
+assert.throws(TypeError, function() {
             Object.create({}, {
                 prop: {
                     set: "abc"
                 }
             });
-
-            return false;
-        } catch (e) {
-            return (e instanceof TypeError);
-        }
-    }
-runTestCase(testcase);
+});
diff --git a/test/built-ins/Object/create/15.2.3.5-4-297.js b/test/built-ins/Object/create/15.2.3.5-4-297.js
index f5e5883869999d44bb446910e808c8e925563c2c..0365a10f8be1652cb6eba532620b098e4b12cf21 100644
--- a/test/built-ins/Object/create/15.2.3.5-4-297.js
+++ b/test/built-ins/Object/create/15.2.3.5-4-297.js
@@ -6,21 +6,13 @@ es5id: 15.2.3.5-4-297
 description: >
     Object.create - 'set' property of one property in 'Properties' is
     an Date object (8.10.5 step 8.b)
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
 
-        try {
+assert.throws(TypeError, function() {
             Object.create({}, {
                 prop: {
                     set: new Date()
                 }
             });
-
-            return false;
-        } catch (e) {
-            return (e instanceof TypeError);
-        }
-    }
-runTestCase(testcase);
+});
diff --git a/test/built-ins/Object/create/15.2.3.5-4-3.js b/test/built-ins/Object/create/15.2.3.5-4-3.js
index 836a621b9ca2077947061e1459840a3e3d556500..5d998fb973e2d5b1baa45fb19e133d3b0a613ce9 100644
--- a/test/built-ins/Object/create/15.2.3.5-4-3.js
+++ b/test/built-ins/Object/create/15.2.3.5-4-3.js
@@ -6,16 +6,9 @@ es5id: 15.2.3.5-4-3
 description: >
     Object.create throws TypeError if 'Properties' is null (15.2.3.7
     step 2)
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
 
-        try {
+assert.throws(TypeError, function() {
             Object.create({}, null);
-            return false;
-        } catch (e) {
-            return (e instanceof TypeError);
-        }
-    }
-runTestCase(testcase);
+});
diff --git a/test/built-ins/Object/create/15.2.3.5-4-300.js b/test/built-ins/Object/create/15.2.3.5-4-300.js
index eb7844fd392e4d6a8d3bf088ca831d75c1a0f094..d9557fc3d5b4ed4c47dc7c82ef34c36d08ff9034 100644
--- a/test/built-ins/Object/create/15.2.3.5-4-300.js
+++ b/test/built-ins/Object/create/15.2.3.5-4-300.js
@@ -6,23 +6,14 @@ es5id: 15.2.3.5-4-300
 description: >
     Object.create - 'set' property of one property in 'Properties' is
     a host object that isn't callable (8.10.5 step 8.b)
-includes:
-    - runTestCase.js
-    - fnGlobalObject.js
+includes: [fnGlobalObject.js]
 ---*/
 
-function testcase() {
 
-        try {
+assert.throws(TypeError, function() {
             Object.create({}, {
                 prop: {
                     set: fnGlobalObject()
                 }
             });
-
-            return false;
-        } catch (e) {
-            return (e instanceof TypeError);
-        }
-    }
-runTestCase(testcase);
+});
diff --git a/test/built-ins/Object/create/15.2.3.5-4-301.js b/test/built-ins/Object/create/15.2.3.5-4-301.js
index c7924401392659d5721e93ce048004ef1bac1551..41acad4d2bfa7b893a79996f65216e98baa4b24e 100644
--- a/test/built-ins/Object/create/15.2.3.5-4-301.js
+++ b/test/built-ins/Object/create/15.2.3.5-4-301.js
@@ -7,22 +7,14 @@ description: >
     Object.create - TypeError is thrown if both 'set' property and
     'value' property of one property in 'Properties' are present
     (8.10.5 step 9.a)
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
 
-        try {
+assert.throws(TypeError, function() {
             Object.create({}, {
                 prop: {
                     set: function () { },
                     value: 100
                 }
             });
-
-            return false;
-        } catch (e) {
-            return (e instanceof TypeError);
-        }
-    }
-runTestCase(testcase);
+});
diff --git a/test/built-ins/Object/create/15.2.3.5-4-302.js b/test/built-ins/Object/create/15.2.3.5-4-302.js
index 2df2e86b6a0fcc3108db3659b507926431b7581f..9d9b0dc596873c27f895b2a9b70517c6c529d7e9 100644
--- a/test/built-ins/Object/create/15.2.3.5-4-302.js
+++ b/test/built-ins/Object/create/15.2.3.5-4-302.js
@@ -7,22 +7,14 @@ description: >
     Object.create - TypeError is thrown if both 'set' property and
     'writable' property of one property in 'Properties' are present
     (8.10.5 step 9.a)
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
 
-        try {
+assert.throws(TypeError, function() {
             Object.create({}, {
                 prop: {
                     set: function () { },
                     writable: true
                 }
             });
-
-            return false;
-        } catch (e) {
-            return (e instanceof TypeError);
-        }
-    }
-runTestCase(testcase);
+});
diff --git a/test/built-ins/Object/create/15.2.3.5-4-303.js b/test/built-ins/Object/create/15.2.3.5-4-303.js
index 3105350c19c844ee19dc9980770322549b227ea5..459a8580e196459f90f0f1d9e681d25c9dea7b96 100644
--- a/test/built-ins/Object/create/15.2.3.5-4-303.js
+++ b/test/built-ins/Object/create/15.2.3.5-4-303.js
@@ -7,22 +7,14 @@ description: >
     Object.create - TypeError is thrown if both 'get' property and
     'value' property of one property in 'Properties' are present
     (8.10.5 step 9.a)
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
 
-        try {
+assert.throws(TypeError, function() {
             Object.create({}, {
                 prop: {
                     get: function () { },
                     value: 100
                 }
             });
-
-            return false;
-        } catch (e) {
-            return (e instanceof TypeError);
-        }
-    }
-runTestCase(testcase);
+});
diff --git a/test/built-ins/Object/create/15.2.3.5-4-304.js b/test/built-ins/Object/create/15.2.3.5-4-304.js
index 3618ff9d38543469e62767244082e657cc571622..bae6d8dff509e4003007640589adb255bd68bb93 100644
--- a/test/built-ins/Object/create/15.2.3.5-4-304.js
+++ b/test/built-ins/Object/create/15.2.3.5-4-304.js
@@ -7,22 +7,14 @@ description: >
     Object.create - TypeError is thrown if both 'get' property and
     'writable' property of one property in 'Properties' are present
     (8.10.5 step 9.a)
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
 
-        try {
+assert.throws(TypeError, function() {
             Object.create({}, {
                 prop: {
                     get: function () { },
                     writable: true
                 }
             });
-
-            return false;
-        } catch (e) {
-            return (e instanceof TypeError);
-        }
-    }
-runTestCase(testcase);
+});
diff --git a/test/built-ins/Object/create/15.2.3.5-4-40.js b/test/built-ins/Object/create/15.2.3.5-4-40.js
index 29bbe0a09572f73ca932e0aa41426b74fd761653..91c14b190a9dd329a08b075ddadc367103fa7a72 100644
--- a/test/built-ins/Object/create/15.2.3.5-4-40.js
+++ b/test/built-ins/Object/create/15.2.3.5-4-40.js
@@ -7,11 +7,8 @@ description: >
     Object.create - ensure that if an exception is thrown it occurs in
     the correct order relative to prior and subsequent side-effects
     (15.2.3.7 step 5.a)
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
-
         var newObj = {};
         var props = {};
         var i = 0;
@@ -34,12 +31,8 @@ function testcase() {
             },
             enumerable: true
         });
-
-        try {
+assert.throws(RangeError, function() {
             newObj = Object.create({}, props);
-            return false;
-        } catch (e) {
-            return (e instanceof RangeError) && !newObj.hasOwnProperty("prop1") && i === 2;
-        }
-    }
-runTestCase(testcase);
+});
+assert.sameValue(newObj.hasOwnProperty("prop1"), false, 'newObj.hasOwnProperty("prop1")');
+assert.sameValue(i, 2, 'i');
diff --git a/test/built-ins/Object/create/15.2.3.5-4-41.js b/test/built-ins/Object/create/15.2.3.5-4-41.js
index d5e2421d377a00d6a00cf06fb362cf932f8fda67..d74dd58cde9b076933583a502e1a5cfc36deddeb 100644
--- a/test/built-ins/Object/create/15.2.3.5-4-41.js
+++ b/test/built-ins/Object/create/15.2.3.5-4-41.js
@@ -6,18 +6,11 @@ es5id: 15.2.3.5-4-41
 description: >
     Object.create - value of one property in 'Properties' is undefined
     (8.10.5 step 1)
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
 
-        try {
+assert.throws(TypeError, function() {
             Object.create({}, {
                 prop: undefined 
             });
-            return false;
-        } catch (e) {
-            return (e instanceof TypeError);
-        }
-    }
-runTestCase(testcase);
+});
diff --git a/test/built-ins/Object/create/15.2.3.5-4-42.js b/test/built-ins/Object/create/15.2.3.5-4-42.js
index d52b5a303be58ffc74ba9536041493a8168abf28..424a2be6665233169c6346fb1caaaeebd3fb9b98 100644
--- a/test/built-ins/Object/create/15.2.3.5-4-42.js
+++ b/test/built-ins/Object/create/15.2.3.5-4-42.js
@@ -6,19 +6,11 @@ es5id: 15.2.3.5-4-42
 description: >
     Object.create - value of one property in 'Properties' is null
     (8.10.5 step 1)
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
 
-        try {
+assert.throws(TypeError, function() {
             Object.create({}, {
                 prop: null 
             });
-            return false;
-        } catch (e) {
-            return (e instanceof TypeError);
-        }
-
-    }
-runTestCase(testcase);
+});
diff --git a/test/built-ins/Object/create/15.2.3.5-4-43.js b/test/built-ins/Object/create/15.2.3.5-4-43.js
index a01187f38e4fc56a1295debf270f9dca4f72fe63..f3ca54ea488c4da881a9678c4f47b62c196b1195 100644
--- a/test/built-ins/Object/create/15.2.3.5-4-43.js
+++ b/test/built-ins/Object/create/15.2.3.5-4-43.js
@@ -6,19 +6,11 @@ es5id: 15.2.3.5-4-43
 description: >
     Object.create - value of one property in 'Properties' is false
     (8.10.5 step 1)
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
 
-        try {
+assert.throws(TypeError, function() {
             Object.create({}, {
                 prop: false 
             });
-            return false;
-        } catch (e) {
-            return (e instanceof TypeError);
-        }
-
-    }
-runTestCase(testcase);
+});
diff --git a/test/built-ins/Object/create/15.2.3.5-4-44.js b/test/built-ins/Object/create/15.2.3.5-4-44.js
index 362e72691369751d37bd4729a1d4662bdc25edee..18073ec961af15eb72d6cd6939a1a17841491054 100644
--- a/test/built-ins/Object/create/15.2.3.5-4-44.js
+++ b/test/built-ins/Object/create/15.2.3.5-4-44.js
@@ -6,18 +6,11 @@ es5id: 15.2.3.5-4-44
 description: >
     Object.create - value of one property in 'Properties' is a number
     primitive (8.10.5 step 1)
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
 
-        try {
+assert.throws(TypeError, function() {
             Object.create({}, {
                 prop: 12 
             });
-            return false;
-        } catch (e) {
-            return (e instanceof TypeError);
-        }
-    }
-runTestCase(testcase);
+});
diff --git a/test/built-ins/Object/create/15.2.3.5-4-45.js b/test/built-ins/Object/create/15.2.3.5-4-45.js
index 0f07634c3e0f5cef42dd1c79ee585f430724b598..653c33ccb168b96b10dfda452e691f74324dc881 100644
--- a/test/built-ins/Object/create/15.2.3.5-4-45.js
+++ b/test/built-ins/Object/create/15.2.3.5-4-45.js
@@ -6,18 +6,11 @@ es5id: 15.2.3.5-4-45
 description: >
     Object.create - value of one property in 'Properties' is a string
     (8.10.5 step 1)
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
 
-        try {
+assert.throws(TypeError, function() {
             Object.create({}, {
                 prop: "abc" 
             });
-            return false;
-        } catch (e) {
-            return (e instanceof TypeError);
-        }
-    }
-runTestCase(testcase);
+});
diff --git a/test/built-ins/Object/defineProperties/15.2.3.7-1-1.js b/test/built-ins/Object/defineProperties/15.2.3.7-1-1.js
index d94b31b676386a65aeea81f3ace85b1f39813ac2..6bf9439eff406f60885adece268dd2e53b0b39d4 100644
--- a/test/built-ins/Object/defineProperties/15.2.3.7-1-1.js
+++ b/test/built-ins/Object/defineProperties/15.2.3.7-1-1.js
@@ -4,16 +4,8 @@
 /*---
 es5id: 15.2.3.7-1-1
 description: Object.defineProperties throws TypeError if 'O' is undefined
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
-
-        try {
+assert.throws(TypeError, function() {
             Object.defineProperties(undefined, {});
-            return false;
-        } catch (e) {
-            return (e instanceof TypeError);
-        }
-    }
-runTestCase(testcase);
+});
diff --git a/test/built-ins/Object/defineProperties/15.2.3.7-1-2.js b/test/built-ins/Object/defineProperties/15.2.3.7-1-2.js
index e0cc78fc9baa53e228ed8df5a02e843a28dc86dd..b4eae1229a31305b80f50ea82ba036e2d352bb33 100644
--- a/test/built-ins/Object/defineProperties/15.2.3.7-1-2.js
+++ b/test/built-ins/Object/defineProperties/15.2.3.7-1-2.js
@@ -4,16 +4,8 @@
 /*---
 es5id: 15.2.3.7-1-2
 description: Object.defineProperties throws TypeError if 'O' is null
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
-
-        try {
+assert.throws(TypeError, function() {
             Object.defineProperties(null, {});
-            return false;
-        } catch (e) {
-            return (e instanceof TypeError);
-        }
-    }
-runTestCase(testcase);
+});
diff --git a/test/built-ins/Object/defineProperties/15.2.3.7-1-3.js b/test/built-ins/Object/defineProperties/15.2.3.7-1-3.js
index eeb85855eef0ebcb696400180cc6f9e00c0cffc4..0974b1a06bf5b1e55423906d6b50273a1b98685b 100644
--- a/test/built-ins/Object/defineProperties/15.2.3.7-1-3.js
+++ b/test/built-ins/Object/defineProperties/15.2.3.7-1-3.js
@@ -4,16 +4,8 @@
 /*---
 es5id: 15.2.3.7-1-3
 description: Object.defineProperties throws TypeError if 'O' is a boolean
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
-
-        try {
+assert.throws(TypeError, function() {
             Object.defineProperties(true, {});
-            return false;
-        } catch (e) {
-            return (e instanceof TypeError);
-        }
-    }
-runTestCase(testcase);
+});
diff --git a/test/built-ins/Object/defineProperties/15.2.3.7-1-4.js b/test/built-ins/Object/defineProperties/15.2.3.7-1-4.js
index 597c32d7af0ed7b12ef6dfc99ac4beef02474802..673f986086371d463605daa81146e4e75e417a86 100644
--- a/test/built-ins/Object/defineProperties/15.2.3.7-1-4.js
+++ b/test/built-ins/Object/defineProperties/15.2.3.7-1-4.js
@@ -4,16 +4,8 @@
 /*---
 es5id: 15.2.3.7-1-4
 description: Object.defineProperties throws TypeError if 'O' is a string
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
-
-        try {
+assert.throws(TypeError, function() {
             Object.defineProperties("abc", {});
-            return false;
-        } catch (e) {
-            return (e instanceof TypeError);
-        }
-    }
-runTestCase(testcase);
+});
diff --git a/test/built-ins/Object/defineProperties/15.2.3.7-1.js b/test/built-ins/Object/defineProperties/15.2.3.7-1.js
index 12c2752a52bdce5d96afeb4a14413dfb98d37136..c6b27773c9b8123d9e3e4d2c6b6390659852fb90 100644
--- a/test/built-ins/Object/defineProperties/15.2.3.7-1.js
+++ b/test/built-ins/Object/defineProperties/15.2.3.7-1.js
@@ -6,17 +6,8 @@ es5id: 15.2.3.7-1
 description: >
     Object.defineProperties throws TypeError if type of first param is
     not Object
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
-    try {
+assert.throws(TypeError, function() {
       Object.defineProperties(0, {});
-    }
-    catch (e) {
-      if (e instanceof TypeError) {
-        return true;
-      }
-    }
- }
-runTestCase(testcase);
+});
diff --git a/test/built-ins/Object/defineProperties/15.2.3.7-2-1.js b/test/built-ins/Object/defineProperties/15.2.3.7-2-1.js
index da621aed45c43b6f3913714ea7f537bc8a5afd23..4f8ca8d07d25c9e7bf3fa9a5afa08864b962c643 100644
--- a/test/built-ins/Object/defineProperties/15.2.3.7-2-1.js
+++ b/test/built-ins/Object/defineProperties/15.2.3.7-2-1.js
@@ -4,16 +4,8 @@
 /*---
 es5id: 15.2.3.7-2-1
 description: Object.defineProperties throws TypeError if 'Properties' is null
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
-
-        try {
+assert.throws(TypeError, function() {
             Object.defineProperties({}, null);
-            return false;
-        } catch (e) {
-            return (e instanceof TypeError);
-        }
-    }
-runTestCase(testcase);
+});
diff --git a/test/built-ins/Object/defineProperties/15.2.3.7-2-2.js b/test/built-ins/Object/defineProperties/15.2.3.7-2-2.js
index 58d31b83c89fd7a94781bfb79d128902a6562c15..5366c8b9ac1edadae786f0228840eb3bc1e55cb0 100644
--- a/test/built-ins/Object/defineProperties/15.2.3.7-2-2.js
+++ b/test/built-ins/Object/defineProperties/15.2.3.7-2-2.js
@@ -6,16 +6,8 @@ es5id: 15.2.3.7-2-2
 description: >
     Object.defineProperties throws TypeError if 'Properties' is
     undefined
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
-
-        try {
+assert.throws(TypeError, function() {
             Object.defineProperties({}, undefined);
-            return false;
-        } catch (e) {
-            return (e instanceof TypeError);
-        }
-    }
-runTestCase(testcase);
+});
diff --git a/test/built-ins/Object/defineProperties/15.2.3.7-5-b-1.js b/test/built-ins/Object/defineProperties/15.2.3.7-5-b-1.js
index 9b10cce727b4452f5fe373f3bb3043601af6cf14..7eaf6bd16a4cfec0d5ff65c3901a024772553bf6 100644
--- a/test/built-ins/Object/defineProperties/15.2.3.7-5-b-1.js
+++ b/test/built-ins/Object/defineProperties/15.2.3.7-5-b-1.js
@@ -4,20 +4,12 @@
 /*---
 es5id: 15.2.3.7-5-b-1
 description: Object.defineProperties - 'descObj' is undefined (8.10.5 step 1)
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
-
         var obj = {};
-
-        try {
+assert.throws(TypeError, function() {
             Object.defineProperties(obj, {
                 prop: undefined
             });
-            return false;
-        } catch (e) {
-            return e instanceof TypeError && !obj.hasOwnProperty("prop");
-        }
-    }
-runTestCase(testcase);
+});
+assert.sameValue(obj.hasOwnProperty("prop"), false, 'obj.hasOwnProperty("prop")');
diff --git a/test/built-ins/Object/defineProperties/15.2.3.7-5-b-2.js b/test/built-ins/Object/defineProperties/15.2.3.7-5-b-2.js
index 768a594be9d99788b7a658624d4845c457e16da1..c7fa6e5ead6a4e70d776e6356f390c602811be1d 100644
--- a/test/built-ins/Object/defineProperties/15.2.3.7-5-b-2.js
+++ b/test/built-ins/Object/defineProperties/15.2.3.7-5-b-2.js
@@ -4,20 +4,12 @@
 /*---
 es5id: 15.2.3.7-5-b-2
 description: Object.defineProperties - 'descObj' is null (8.10.5 step 1)
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
-
         var obj = {};
-      
-        try {
+assert.throws(TypeError, function() {
             Object.defineProperties(obj, {
                 prop: null
             });
-            return false;
-        } catch (e) {
-            return e instanceof TypeError && !obj.hasOwnProperty("prop"); ;
-        }
-    }
-runTestCase(testcase);
+});
+assert.sameValue(obj.hasOwnProperty("prop"), false, 'obj.hasOwnProperty("prop")');
diff --git a/test/built-ins/Object/defineProperties/15.2.3.7-5-b-218.js b/test/built-ins/Object/defineProperties/15.2.3.7-5-b-218.js
index 3cef301fb59a4e9c0e6fb3b8fc2af556fe31e348..391538ddb42e4c9d161cbcd78ab987885ae12d29 100644
--- a/test/built-ins/Object/defineProperties/15.2.3.7-5-b-218.js
+++ b/test/built-ins/Object/defineProperties/15.2.3.7-5-b-218.js
@@ -6,22 +6,13 @@ es5id: 15.2.3.7-5-b-218
 description: >
     Object.defineProperties - value of 'get' property of 'descObj' is
     primitive values( value is null) (8.10.5 step 7.b)
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
         var obj = {};
-
-        try {
+assert.throws(TypeError, function() {
             Object.defineProperties(obj, {
                 property: {
                     get: null
                 }
             });
-
-            return false;
-        } catch (e) {
-            return (e instanceof TypeError);
-        }
-    }
-runTestCase(testcase);
+});
diff --git a/test/built-ins/Object/defineProperties/15.2.3.7-5-b-219.js b/test/built-ins/Object/defineProperties/15.2.3.7-5-b-219.js
index e04e7147ead89bfc97f936bab4b95a7626b0a4a8..adb34766fdaee1d930f6dadeff858b53ba2f13e1 100644
--- a/test/built-ins/Object/defineProperties/15.2.3.7-5-b-219.js
+++ b/test/built-ins/Object/defineProperties/15.2.3.7-5-b-219.js
@@ -6,22 +6,13 @@ es5id: 15.2.3.7-5-b-219
 description: >
     Object.defineProperties - value of 'get' property of 'descObj' is
     primitive values( value is boolean) (8.10.5 step 7.b)
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
         var obj = {};
-
-        try {
+assert.throws(TypeError, function() {
             Object.defineProperties(obj, {
                 property: {
                     get: false
                 }
             });
-
-            return false;
-        } catch (e) {
-            return (e instanceof TypeError);
-        }
-    }
-runTestCase(testcase);
+});
diff --git a/test/built-ins/Object/defineProperties/15.2.3.7-5-b-220.js b/test/built-ins/Object/defineProperties/15.2.3.7-5-b-220.js
index ffce3edc5580789945c7a5995b2bf72b56dff825..d684f624dbff4a3751f0f2f1aab1bf6671ca29fd 100644
--- a/test/built-ins/Object/defineProperties/15.2.3.7-5-b-220.js
+++ b/test/built-ins/Object/defineProperties/15.2.3.7-5-b-220.js
@@ -6,22 +6,13 @@ es5id: 15.2.3.7-5-b-220
 description: >
     Object.defineProperties - value of 'get' property of 'descObj' is
     primitive values( value is number) (8.10.5 step 7.b)
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
         var obj = {};
-
-        try {
+assert.throws(TypeError, function() {
             Object.defineProperties(obj, {
                 property: {
                     get: 123
                 }
             });
-
-            return false;
-        } catch (e) {
-            return (e instanceof TypeError);
-        }
-    }
-runTestCase(testcase);
+});
diff --git a/test/built-ins/Object/defineProperties/15.2.3.7-5-b-221.js b/test/built-ins/Object/defineProperties/15.2.3.7-5-b-221.js
index ea60b42e68d299ca8bf990401066e8f41c828f16..982cddb9bdc8807085506a34af3c80394d1ca5a2 100644
--- a/test/built-ins/Object/defineProperties/15.2.3.7-5-b-221.js
+++ b/test/built-ins/Object/defineProperties/15.2.3.7-5-b-221.js
@@ -6,22 +6,13 @@ es5id: 15.2.3.7-5-b-221
 description: >
     Object.defineProperties - value of 'get' property of 'descObj' is
     primitive values( value is string) (8.10.5 step 7.b)
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
         var obj = {};
-
-        try {
+assert.throws(TypeError, function() {
             Object.defineProperties(obj, {
                 property: {
                     get: "string"
                 }
             });
-
-            return false;
-        } catch (e) {
-            return (e instanceof TypeError);
-        }
-    }
-runTestCase(testcase);
+});
diff --git a/test/built-ins/Object/defineProperties/15.2.3.7-5-b-222.js b/test/built-ins/Object/defineProperties/15.2.3.7-5-b-222.js
index 3e5cfc2e4a10489352f73769120e40f068405526..57e21ef35a91cfbc6a01c530d3d3609810381023 100644
--- a/test/built-ins/Object/defineProperties/15.2.3.7-5-b-222.js
+++ b/test/built-ins/Object/defineProperties/15.2.3.7-5-b-222.js
@@ -6,22 +6,13 @@ es5id: 15.2.3.7-5-b-222
 description: >
     Object.defineProperties - value of 'get' property of 'descObj' is
     applied to Array object (8.10.5 step 7.b)
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
         var obj = {};
-
-        try {
+assert.throws(TypeError, function() {
             Object.defineProperties(obj, {
                 property: {
                     get: []
                 }
             });
-
-            return false;
-        } catch (e) {
-            return (e instanceof TypeError);
-        }
-    }
-runTestCase(testcase);
+});
diff --git a/test/built-ins/Object/defineProperties/15.2.3.7-5-b-253.js b/test/built-ins/Object/defineProperties/15.2.3.7-5-b-253.js
index 1667d76f573c42c0ad30c8d578e674c0b4924a91..e35a948b5dba53e200ce2800fc9fe550a2b47897 100644
--- a/test/built-ins/Object/defineProperties/15.2.3.7-5-b-253.js
+++ b/test/built-ins/Object/defineProperties/15.2.3.7-5-b-253.js
@@ -6,22 +6,13 @@ es5id: 15.2.3.7-5-b-253
 description: >
     Object.defineProperties - value of 'set' property of 'descObj' is
     primitive values null (8.10.5 step 8.b)
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
-
         var obj = {};
-
-        try {
+assert.throws(TypeError, function() {
             Object.defineProperties(obj, {
                 prop: {
                     set: null
                 }
             });
-            return false;
-        } catch (e) {
-            return (e instanceof TypeError);
-        }
-    }
-runTestCase(testcase);
+});
diff --git a/test/built-ins/Object/defineProperties/15.2.3.7-5-b-254.js b/test/built-ins/Object/defineProperties/15.2.3.7-5-b-254.js
index 4dcec66e6897eedfd0cb809f2612839883769f0d..11d390a2bd7d1c6be01782204efe7e8e14116c92 100644
--- a/test/built-ins/Object/defineProperties/15.2.3.7-5-b-254.js
+++ b/test/built-ins/Object/defineProperties/15.2.3.7-5-b-254.js
@@ -6,22 +6,13 @@ es5id: 15.2.3.7-5-b-254
 description: >
     Object.defineProperties - value of 'set' property of 'descObj' is
     primitive values boolean (8.10.5 step 8.b)
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
-
         var obj = {};
-
-        try {
+assert.throws(TypeError, function() {
             Object.defineProperties(obj, {
                 prop: {
                     set: true
                 }
             });
-            return false;
-        } catch (e) {
-            return (e instanceof TypeError);
-        }
-    }
-runTestCase(testcase);
+});
diff --git a/test/built-ins/Object/defineProperties/15.2.3.7-5-b-255.js b/test/built-ins/Object/defineProperties/15.2.3.7-5-b-255.js
index f158942905db34204cfe9ff120907b44ba24d26c..acbcc7ed2750afe1a9afe89d60b1298b17f7484a 100644
--- a/test/built-ins/Object/defineProperties/15.2.3.7-5-b-255.js
+++ b/test/built-ins/Object/defineProperties/15.2.3.7-5-b-255.js
@@ -6,22 +6,13 @@ es5id: 15.2.3.7-5-b-255
 description: >
     Object.defineProperties - value of 'set' property of 'descObj' is
     primitive values number (8.10.5 step 8.b)
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
-
         var obj = {};
-
-        try {
+assert.throws(TypeError, function() {
             Object.defineProperties(obj, {
                 prop: {
                     set: 100
                 }
             });
-            return false;
-        } catch (e) {
-            return (e instanceof TypeError);
-        }
-    }
-runTestCase(testcase);
+});
diff --git a/test/built-ins/Object/defineProperties/15.2.3.7-5-b-256.js b/test/built-ins/Object/defineProperties/15.2.3.7-5-b-256.js
index 762d1ba4cfea7950899afd0c66ff5cbb30df61a5..85e6c6b88cb5ec27a3b6520659b879a3db43f1cc 100644
--- a/test/built-ins/Object/defineProperties/15.2.3.7-5-b-256.js
+++ b/test/built-ins/Object/defineProperties/15.2.3.7-5-b-256.js
@@ -6,22 +6,13 @@ es5id: 15.2.3.7-5-b-256
 description: >
     Object.defineProperties - value of 'set' property of 'descObj' is
     primitive values string (8.10.5 step 8.b)
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
-
         var obj = {};
-
-        try {
+assert.throws(TypeError, function() {
             Object.defineProperties(obj, {
                 prop: {
                     set: "abcdef"
                 }
             });
-            return false;
-        } catch (e) {
-            return (e instanceof TypeError);
-        }
-    }
-runTestCase(testcase);
+});
diff --git a/test/built-ins/Object/defineProperties/15.2.3.7-5-b-257.js b/test/built-ins/Object/defineProperties/15.2.3.7-5-b-257.js
index 22455761be91c235f43b5a6d91be2167ea9fca39..848af07304172b10eb5a4f5e6f80187b21ead64a 100644
--- a/test/built-ins/Object/defineProperties/15.2.3.7-5-b-257.js
+++ b/test/built-ins/Object/defineProperties/15.2.3.7-5-b-257.js
@@ -6,22 +6,13 @@ es5id: 15.2.3.7-5-b-257
 description: >
     Object.defineProperties - value of 'set' property of 'descObj' is
     an interesting object other than a function (8.10.5 step 8.b)
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
-
         var obj = {};
-
-        try {
+assert.throws(TypeError, function() {
             Object.defineProperties(obj, {
                 prop: {
                     set: []
                 }
             });
-            return false;
-        } catch (e) {
-            return (e instanceof TypeError);
-        }
-    }
-runTestCase(testcase);
+});
diff --git a/test/built-ins/Object/defineProperties/15.2.3.7-5-b-261.js b/test/built-ins/Object/defineProperties/15.2.3.7-5-b-261.js
index fc31f20a363bbfce174e12ba9644e59304083cbf..f0fed05eb198e8e7a7208cd85a31337f4689f4a3 100644
--- a/test/built-ins/Object/defineProperties/15.2.3.7-5-b-261.js
+++ b/test/built-ins/Object/defineProperties/15.2.3.7-5-b-261.js
@@ -7,24 +7,15 @@ description: >
     Object.defineProperties - TypeError is thrown if both 'set'
     property and 'value' property of 'descObj' are present (8.10.5
     step 9.a)
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
-
         var setFun = function () {};
         var obj = {};
-
-        try {
+assert.throws(TypeError, function() {
             Object.defineProperties(obj, {
                 prop: {
                     value: 12,
                     set: setFun
                 }
             });
-            return false;
-        } catch (e) {
-            return (e instanceof TypeError);
-        }
-    }
-runTestCase(testcase);
+});
diff --git a/test/built-ins/Object/defineProperties/15.2.3.7-5-b-262.js b/test/built-ins/Object/defineProperties/15.2.3.7-5-b-262.js
index 247f747edb078e951317942539bf454abc1c0bdb..5587e17654abafba976d7a202b7bc8ddf32143c6 100644
--- a/test/built-ins/Object/defineProperties/15.2.3.7-5-b-262.js
+++ b/test/built-ins/Object/defineProperties/15.2.3.7-5-b-262.js
@@ -7,24 +7,15 @@ description: >
     Object.defineProperties - TypeError is thrown if both 'set'
     property and 'writable' property of 'descObj' are present (8.10.5
     step 9.a)
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
-
         var setFun = function () { };
         var obj = {};
-
-        try {
+assert.throws(TypeError, function() {
             Object.defineProperties(obj, {
                 prop: {
                     writable: true,
                     set: setFun
                 }
             });
-            return false;
-        } catch (e) {
-            return (e instanceof TypeError);
-        }
-    }
-runTestCase(testcase);
+});
diff --git a/test/built-ins/Object/defineProperties/15.2.3.7-5-b-263.js b/test/built-ins/Object/defineProperties/15.2.3.7-5-b-263.js
index 9bf35d85ee8d2eb740698824d31556f58b242521..1587c5de2ca0a390cdd06a39dfe1b98d0f58bad6 100644
--- a/test/built-ins/Object/defineProperties/15.2.3.7-5-b-263.js
+++ b/test/built-ins/Object/defineProperties/15.2.3.7-5-b-263.js
@@ -7,24 +7,15 @@ description: >
     Object.defineProperties - TypeError is thrown if both 'get'
     property and 'value' property of 'descObj' are present (8.10.5
     step 9.a)
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
-
         var getFun = function () {};
         var obj = {};
-
-        try {
+assert.throws(TypeError, function() {
             Object.defineProperties(obj, {
                 prop: {
                     value: 12,
                     get: getFun
                 }
             });
-            return false;
-        } catch (e) {
-            return (e instanceof TypeError);
-        }
-    }
-runTestCase(testcase);
+});
diff --git a/test/built-ins/Object/defineProperties/15.2.3.7-5-b-264.js b/test/built-ins/Object/defineProperties/15.2.3.7-5-b-264.js
index 23be87b1826706d1e026572d498e7e20ca57006f..945e4a276d3fce94db97efae9ccd23ba7e7ac1f9 100644
--- a/test/built-ins/Object/defineProperties/15.2.3.7-5-b-264.js
+++ b/test/built-ins/Object/defineProperties/15.2.3.7-5-b-264.js
@@ -7,25 +7,16 @@ description: >
     Object.defineProperties - TypeError is thrown if both 'get'
     property and 'writable' property of 'descObj' are present (8.10.5
     step 9.a)
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
-
         var getFun = function () {};
 
         var obj = {};
-
-        try {
+assert.throws(TypeError, function() {
             Object.defineProperties(obj, {
                 "prop": {
                     writable: true,
                     get: getFun
                 }
             });
-            return false;
-        } catch (e) {
-            return (e instanceof TypeError);
-        }
-    }
-runTestCase(testcase);
+});
diff --git a/test/built-ins/Object/defineProperties/15.2.3.7-5-b-3.js b/test/built-ins/Object/defineProperties/15.2.3.7-5-b-3.js
index 8a8995e292ebd139c902a640928f87218609af4d..cba662cf528e491cbd32ec62f865677eaac8fcec 100644
--- a/test/built-ins/Object/defineProperties/15.2.3.7-5-b-3.js
+++ b/test/built-ins/Object/defineProperties/15.2.3.7-5-b-3.js
@@ -4,20 +4,12 @@
 /*---
 es5id: 15.2.3.7-5-b-3
 description: Object.defineProperties - 'descObj' is a boolean (8.10.5 step 1)
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
-
         var obj = {};
-
-        try {
+assert.throws(TypeError, function() {
             Object.defineProperties(obj, {
                 prop: true
             });
-            return false;
-        } catch (e) {
-            return e instanceof TypeError && !obj.hasOwnProperty("prop");
-        }
-    }
-runTestCase(testcase);
+});
+assert.sameValue(obj.hasOwnProperty("prop"), false, 'obj.hasOwnProperty("prop")');
diff --git a/test/built-ins/Object/defineProperties/15.2.3.7-5-b-4.js b/test/built-ins/Object/defineProperties/15.2.3.7-5-b-4.js
index e61abc465393c950a9552ca0d81df3a276a7e28e..ee430f83cee799707cab633919e3cc2b6fd5f41f 100644
--- a/test/built-ins/Object/defineProperties/15.2.3.7-5-b-4.js
+++ b/test/built-ins/Object/defineProperties/15.2.3.7-5-b-4.js
@@ -4,20 +4,12 @@
 /*---
 es5id: 15.2.3.7-5-b-4
 description: Object.defineProperties - 'descObj' is a number (8.10.5 step 1)
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
-
         var obj = {};
-
-        try {
+assert.throws(TypeError, function() {
             Object.defineProperties(obj, {
                 prop: 12
             });
-            return false;
-        } catch (e) {
-            return e instanceof TypeError && !obj.hasOwnProperty("prop");
-        }
-    }
-runTestCase(testcase);
+});
+assert.sameValue(obj.hasOwnProperty("prop"), false, 'obj.hasOwnProperty("prop")');
diff --git a/test/built-ins/Object/defineProperties/15.2.3.7-5-b-5.js b/test/built-ins/Object/defineProperties/15.2.3.7-5-b-5.js
index c996b48e16847d2b9338579189ff322dc149577f..27a60e51de4602d65c21a504a7e17555ac4926cf 100644
--- a/test/built-ins/Object/defineProperties/15.2.3.7-5-b-5.js
+++ b/test/built-ins/Object/defineProperties/15.2.3.7-5-b-5.js
@@ -4,20 +4,12 @@
 /*---
 es5id: 15.2.3.7-5-b-5
 description: Object.defineProperties - 'descObj' is a string (8.10.5 step 1)
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
-
         var obj = {};
-
-        try {
+assert.throws(TypeError, function() {
             Object.defineProperties(obj, {
                 prop: "abc"
             });
-            return false;
-        } catch (e) {
-            return e instanceof TypeError && !obj.hasOwnProperty("prop");
-        }
-    }
-runTestCase(testcase);
+});
+assert.sameValue(obj.hasOwnProperty("prop"), false, 'obj.hasOwnProperty("prop")');
diff --git a/test/built-ins/Object/defineProperties/15.2.3.7-6-a-1.js b/test/built-ins/Object/defineProperties/15.2.3.7-6-a-1.js
index 8532a067fb087aaf7e570ea4031ba20c3a2cb769..e282f560758f13266376db40fa77c4db1f24f3a7 100644
--- a/test/built-ins/Object/defineProperties/15.2.3.7-6-a-1.js
+++ b/test/built-ins/Object/defineProperties/15.2.3.7-6-a-1.js
@@ -6,26 +6,18 @@ es5id: 15.2.3.7-6-a-1
 description: >
     Object.defineProperties - 'P' is own existing data property
     (8.12.9 step 1 )
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
         var obj = {};
         Object.defineProperty(obj, "prop", {
             value: 11,
             configurable: false
         });
-
-        try {
+assert.throws(TypeError, function() {
             Object.defineProperties(obj, { 
                 prop: {
                     value: 12,
                     configurable: true
                 }
             });
-            return false;
-        } catch (e) {
-            return (e instanceof TypeError);
-        }
-    }
-runTestCase(testcase);
+});
diff --git a/test/built-ins/Object/defineProperties/15.2.3.7-6-a-10.js b/test/built-ins/Object/defineProperties/15.2.3.7-6-a-10.js
index 5ec043573811b9762b5ec8633013514497e9c146..ed64214cf9a3660fb1a625ba86d38813641fe1eb 100644
--- a/test/built-ins/Object/defineProperties/15.2.3.7-6-a-10.js
+++ b/test/built-ins/Object/defineProperties/15.2.3.7-6-a-10.js
@@ -7,10 +7,8 @@ description: >
     Object.defineProperties - 'P' is own accessor property without a
     get function that overrides an inherited accessor property (8.12.9
     step 1 )
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
         var proto = {};
         Object.defineProperty(proto, "prop", {
             get: function () {
@@ -27,17 +25,11 @@ function testcase() {
             set: function () { },
             configurable: false
         });
-
-        try {
+assert.throws(TypeError, function() {
             Object.defineProperties(obj, {
                 prop: {
                     value: 12,
                     configurable: true
                 }
             });
-            return false;
-        } catch (e) {
-            return (e instanceof TypeError);
-        }
-    }
-runTestCase(testcase);
+});
diff --git a/test/built-ins/Object/defineProperties/15.2.3.7-6-a-112.js b/test/built-ins/Object/defineProperties/15.2.3.7-6-a-112.js
index 3ef0d6ad464b71314db9c8a740f87f89043ab381..e22b9a9ead6fde5761d5230cd4852e556b9834d7 100644
--- a/test/built-ins/Object/defineProperties/15.2.3.7-6-a-112.js
+++ b/test/built-ins/Object/defineProperties/15.2.3.7-6-a-112.js
@@ -6,27 +6,21 @@ es5id: 15.2.3.7-6-a-112
 description: >
     Object.defineProperties - 'O' is an Array, test the length
     property of 'O' is own data property (15.4.5.1 step 1)
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
-
         var arr = [0, 1];
         Object.defineProperty(arr, "1", {
             value: 1,
             configurable: false
         });
-        try {
-
+assert.throws(TypeError, function() {
             Object.defineProperties(arr, {
                 length: { value: 1 }
             });
-            return false;
-        } catch (ex) {
+});
             var desc = Object.getOwnPropertyDescriptor(arr, "length");
 
-            return ex instanceof TypeError && desc.value === 2 &&
-                desc.writable && !desc.enumerable && !desc.configurable;
-        }
-    }
-runTestCase(testcase);
+assert.sameValue(desc.value, 2, 'desc.value');
+assert(desc.writable, 'desc.writable !== true');
+assert.sameValue(desc.enumerable, false, 'desc.enumerable');
+assert.sameValue(desc.configurable, false, 'desc.configurable');
diff --git a/test/built-ins/Object/defineProperties/15.2.3.7-6-a-116.js b/test/built-ins/Object/defineProperties/15.2.3.7-6-a-116.js
index 8a58af647c54d97ff16b46aed79832c1f2112d0c..4c300f6d74375b17dd733343363f29b25c9b9171 100644
--- a/test/built-ins/Object/defineProperties/15.2.3.7-6-a-116.js
+++ b/test/built-ins/Object/defineProperties/15.2.3.7-6-a-116.js
@@ -8,21 +8,11 @@ description: >
     property of 'O', the [[Value]] field of 'desc' is absent, test
     TypeError is thrown when updating the [[Configurable]] attribute
     of the length property from false to true (15.4.5.1 step 3.a.i)
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
-
         var arr = [];
-
-        try {
+assert.throws(TypeError, function() {
             Object.defineProperties(arr, {
                 length: { configurable: true }
             });
-
-            return false;
-        } catch (e) {
-            return (e instanceof TypeError);
-        }
-    }
-runTestCase(testcase);
+});
diff --git a/test/built-ins/Object/defineProperties/15.2.3.7-6-a-117.js b/test/built-ins/Object/defineProperties/15.2.3.7-6-a-117.js
index 1ba128bceb3a28e509e9803ba4b6672b5c4647ba..ab0fecce740ad1b6a021e7aa317fd25ec1063e65 100644
--- a/test/built-ins/Object/defineProperties/15.2.3.7-6-a-117.js
+++ b/test/built-ins/Object/defineProperties/15.2.3.7-6-a-117.js
@@ -8,21 +8,11 @@ description: >
     property of 'O', the [[Value]] field of 'desc' is absent, test
     TypeError is thrown when updating the [[Enumerable]] attribute of
     the length property from false to true (15.4.5.1 step 3.a.i)
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
-
         var arr = [];
-
-        try {
+assert.throws(TypeError, function() {
             Object.defineProperties(arr, {
                 length: { enumerable: true }
             });
-
-            return false;
-        } catch (e) {
-            return (e instanceof TypeError);
-        }
-    }
-runTestCase(testcase);
+});
diff --git a/test/built-ins/Object/defineProperties/15.2.3.7-6-a-118.js b/test/built-ins/Object/defineProperties/15.2.3.7-6-a-118.js
index 7dc734ad892aa3d16aa0d13b3e416a35c3051047..95ab99ed5880f88a49cea76f844b45318cffd436 100644
--- a/test/built-ins/Object/defineProperties/15.2.3.7-6-a-118.js
+++ b/test/built-ins/Object/defineProperties/15.2.3.7-6-a-118.js
@@ -8,14 +8,10 @@ description: >
     property of 'O', the [[Value]] field of 'desc' is absent, test
     TypeError is thrown when 'desc' is accessor descriptor (15.4.5.1
     step 3.a.i)
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
-
         var arr = [];
-
-        try {
+assert.throws(TypeError, function() {
             Object.defineProperties(arr, {
                 length: {
                     get: function () {
@@ -23,10 +19,5 @@ function testcase() {
                     }
                 }
             });
-
-            return false;
-        } catch (e) {
-            return e instanceof TypeError && arr.length === 0;
-        }
-    }
-runTestCase(testcase);
+});
+assert.sameValue(arr.length, 0, 'arr.length');
diff --git a/test/built-ins/Object/defineProperties/15.2.3.7-6-a-119.js b/test/built-ins/Object/defineProperties/15.2.3.7-6-a-119.js
index 14cbb248d0caca28453cc2eda90473b3c6d047c0..e249d698ac578241d06da09d6627b99c0f93bd23 100644
--- a/test/built-ins/Object/defineProperties/15.2.3.7-6-a-119.js
+++ b/test/built-ins/Object/defineProperties/15.2.3.7-6-a-119.js
@@ -8,25 +8,15 @@ description: >
     property of 'O', the [[Value]] field of 'desc' is absent, test
     TypeError is thrown when updating the [[Writable]] attribute of
     the length property from false to true (15.4.5.1 step 3.a.i)
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
-
         var arr = [];
 
         Object.defineProperty(arr, "length", {
             writable: false
         });
-
-        try {
+assert.throws(TypeError, function() {
             Object.defineProperties(arr, { 
                 length: { writable: true } 
             });
-
-            return false;
-        } catch (e) {
-            return (e instanceof TypeError);
-        }
-    }
-runTestCase(testcase);
+});
diff --git a/test/built-ins/Object/defineProperties/15.2.3.7-6-a-121.js b/test/built-ins/Object/defineProperties/15.2.3.7-6-a-121.js
index 3a03bf2664dc8c9b8ab46635c9269fd1fb7b0466..2c62ae0e9474fc451d694cc964b2b9ce831f9c72 100644
--- a/test/built-ins/Object/defineProperties/15.2.3.7-6-a-121.js
+++ b/test/built-ins/Object/defineProperties/15.2.3.7-6-a-121.js
@@ -7,21 +7,12 @@ description: >
     Object.defineProperties - 'O' is an Array, 'P' is the length
     property of 'O', test RangeError is thrown when setting the
     [[Value]] field of 'desc' to undefined (15.4.5.1 step 3.c)
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
-
         var arr = [];
-
-        try {
+assert.throws(RangeError, function() {
             Object.defineProperties(arr, {
                 length: { value: undefined }
             });
-
-            return false;
-        } catch (e) {
-            return e instanceof RangeError && arr.length === 0;
-        }
-    }
-runTestCase(testcase);
+});
+assert.sameValue(arr.length, 0, 'arr.length');
diff --git a/test/built-ins/Object/defineProperties/15.2.3.7-6-a-129.js b/test/built-ins/Object/defineProperties/15.2.3.7-6-a-129.js
index 5277ce5d97b77b12da4413b09d1648d337bcc9d3..e432de73f510f9f0ada6b9c18085bf174fa6ee20 100644
--- a/test/built-ins/Object/defineProperties/15.2.3.7-6-a-129.js
+++ b/test/built-ins/Object/defineProperties/15.2.3.7-6-a-129.js
@@ -7,22 +7,14 @@ description: >
     Object.defineProperties - 'O' is an Array, 'name' is the length
     property of 'O', test the [[Value]] field of 'desc' is negative
     number (15.4.5.1 step 3.c)
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
-
         var arr = [];
-
-        try {
+assert.throws(RangeError, function() {
             Object.defineProperties(arr, {
                 length: {
                     value: -9
                 }
             });
-            return false;
-        } catch (e) {
-            return e instanceof RangeError && arr.length === 0;
-        }
-    }
-runTestCase(testcase);
+});
+assert.sameValue(arr.length, 0, 'arr.length');
diff --git a/test/built-ins/Object/defineProperties/15.2.3.7-6-a-130.js b/test/built-ins/Object/defineProperties/15.2.3.7-6-a-130.js
index fc090de0e0adf3c7b0f0d668fa1cc49ee32bb506..ff246ba3241edc9a9dfcc139362343813350fd44 100644
--- a/test/built-ins/Object/defineProperties/15.2.3.7-6-a-130.js
+++ b/test/built-ins/Object/defineProperties/15.2.3.7-6-a-130.js
@@ -7,22 +7,14 @@ description: >
     Object.defineProperties - 'O' is an Array, 'name' is the length
     property of 'O', test the [[Value]] field of 'desc' is +Infinity
     (15.4.5.1 step 3.c)
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
-
         var arr = [];
-
-        try {
+assert.throws(RangeError, function() {
             Object.defineProperties(arr, {
                 length: {
                     value: +Infinity
                 }
             });
-            return false;
-        } catch (e) {
-            return e instanceof RangeError && arr.length === 0;
-        }
-    }
-runTestCase(testcase);
+});
+assert.sameValue(arr.length, 0, 'arr.length');
diff --git a/test/built-ins/Object/defineProperties/15.2.3.7-6-a-131.js b/test/built-ins/Object/defineProperties/15.2.3.7-6-a-131.js
index e312ce8f9f2f236fe8409a64f880afff9f8362ba..ada55d4a51adbd58b67134d72530dc8f61a24726 100644
--- a/test/built-ins/Object/defineProperties/15.2.3.7-6-a-131.js
+++ b/test/built-ins/Object/defineProperties/15.2.3.7-6-a-131.js
@@ -7,22 +7,14 @@ description: >
     Object.defineProperties - 'O' is an Array, 'name' is the length
     property of 'O', test the [[Value]] field of 'desc' is -Infinity
     (15.4.5.1 step 3.c)
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
-
         var arr = [];
-
-        try {
+assert.throws(RangeError, function() {
             Object.defineProperties(arr, {
                 length: {
                     value: -Infinity
                 }
             });
-            return false;
-        } catch (e) {
-            return e instanceof RangeError && arr.length === 0;
-        }
-    }
-runTestCase(testcase);
+});
+assert.sameValue(arr.length, 0, 'arr.length');
diff --git a/test/built-ins/Object/defineProperties/15.2.3.7-6-a-132.js b/test/built-ins/Object/defineProperties/15.2.3.7-6-a-132.js
index a8670853aa88850dde022b4a250fad71140cf179..16015d3bb0b10d29ecd2e7f5fb0d3e30d3c9868c 100644
--- a/test/built-ins/Object/defineProperties/15.2.3.7-6-a-132.js
+++ b/test/built-ins/Object/defineProperties/15.2.3.7-6-a-132.js
@@ -7,23 +7,14 @@ description: >
     Object.defineProperties - 'O' is an Array, 'name' is the length
     property of 'O', test the [[Value]] field of 'desc' is NaN
     (15.4.5.1 step 3.c)
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
-
         var arr = [];
-
-        try {
+assert.throws(RangeError, function() {
             Object.defineProperties(arr, {
                 length: {
                     value: NaN
                 }
             });
-
-            return false;
-        } catch (e) {
-            return e instanceof RangeError && arr.length === 0;
-        }
-    }
-runTestCase(testcase);
+});
+assert.sameValue(arr.length, 0, 'arr.length');
diff --git a/test/built-ins/Object/defineProperties/15.2.3.7-6-a-134.js b/test/built-ins/Object/defineProperties/15.2.3.7-6-a-134.js
index 04ccb58edc21e7796df19e2ecde7f9e676b1be4d..c9b787f8d90b57c63124394b398d827b13cc49e9 100644
--- a/test/built-ins/Object/defineProperties/15.2.3.7-6-a-134.js
+++ b/test/built-ins/Object/defineProperties/15.2.3.7-6-a-134.js
@@ -7,22 +7,14 @@ description: >
     Object.defineProperties - 'O' is an Array, 'name' is the length
     property of 'O', test the [[Value]] field of 'desc' is a string
     containing a negative number (15.4.5.1 step 3.c)
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
-
         var arr = [];
-
-        try {
+assert.throws(RangeError, function() {
             Object.defineProperties(arr, {
                 length: {
                     value: "-42"
                 }
             });
-            return false;
-        } catch (e) {
-            return e instanceof RangeError && arr.length === 0;
-        }
-    }
-runTestCase(testcase);
+});
+assert.sameValue(arr.length, 0, 'arr.length');
diff --git a/test/built-ins/Object/defineProperties/15.2.3.7-6-a-135.js b/test/built-ins/Object/defineProperties/15.2.3.7-6-a-135.js
index 1f172e3a1682cf98524fe1ad21f9760397f9f569..5f9b707fdebceb51742d79e2179d9736e907bab8 100644
--- a/test/built-ins/Object/defineProperties/15.2.3.7-6-a-135.js
+++ b/test/built-ins/Object/defineProperties/15.2.3.7-6-a-135.js
@@ -7,22 +7,14 @@ description: >
     Object.defineProperties - 'O' is an Array, 'name' is the length
     property of 'O', test the [[Value]] field of 'desc' is a string
     containing a decimal number (15.4.5.1 step 3.c)
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
-
         var arr = [];
-
-        try {
+assert.throws(RangeError, function() {
             Object.defineProperties(arr, {
                 length: {
                     value: "200.59"
                 }
             });
-            return false;
-        } catch (e) {
-            return e instanceof RangeError && arr.length === 0;
-        }
-    }
-runTestCase(testcase);
+});
+assert.sameValue(arr.length, 0, 'arr.length');
diff --git a/test/built-ins/Object/defineProperties/15.2.3.7-6-a-136.js b/test/built-ins/Object/defineProperties/15.2.3.7-6-a-136.js
index 3c9d497472fcc8267a69dc80bc9fb6f96b2f0e32..1613213e8679cc12ac8d87467d8eb34b50c0d63c 100644
--- a/test/built-ins/Object/defineProperties/15.2.3.7-6-a-136.js
+++ b/test/built-ins/Object/defineProperties/15.2.3.7-6-a-136.js
@@ -7,22 +7,14 @@ description: >
     Object.defineProperties - 'O' is an Array, 'name' is the length
     property of 'O', test the [[Value]] field of 'desc' is a string
     containing +Infinity (15.4.5.1 step 3.c)
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
-
         var arr = [];
-
-        try {
+assert.throws(RangeError, function() {
             Object.defineProperties(arr, {
                 length: {
                     value: "+Infinity"
                 }
             });
-            return false;
-        } catch (e) {
-            return e instanceof RangeError && arr.length === 0;
-        }
-    }
-runTestCase(testcase);
+});
+assert.sameValue(arr.length, 0, 'arr.length');
diff --git a/test/built-ins/Object/defineProperties/15.2.3.7-6-a-137.js b/test/built-ins/Object/defineProperties/15.2.3.7-6-a-137.js
index e1d0b07caf970324b1c8b367d4e9b02a4d30f545..ebc116b2dff70bc11ea9926820117f91872d48c7 100644
--- a/test/built-ins/Object/defineProperties/15.2.3.7-6-a-137.js
+++ b/test/built-ins/Object/defineProperties/15.2.3.7-6-a-137.js
@@ -7,22 +7,14 @@ description: >
     Object.defineProperties - 'O' is an Array, 'name' is the length
     property of 'O', test the [[Value]] field of 'desc' is a string
     containing -Infinity (15.4.5.1 step 3.c)
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
-
         var arr = [];
-
-        try {
+assert.throws(RangeError, function() {
             Object.defineProperties(arr, {
                 length: {
                     value: "-Infinity"
                 }
             });
-            return false;
-        } catch (e) {
-            return e instanceof RangeError && arr.length === 0;
-        }
-    }
-runTestCase(testcase);
+});
+assert.sameValue(arr.length, 0, 'arr.length');
diff --git a/test/built-ins/Object/defineProperties/15.2.3.7-6-a-141.js b/test/built-ins/Object/defineProperties/15.2.3.7-6-a-141.js
index 58d5cb72c25eae4e34c1992a536b3b2de221b8d0..ae2debbf94fcb5cce777eb2dd7b72ff7c2438e37 100644
--- a/test/built-ins/Object/defineProperties/15.2.3.7-6-a-141.js
+++ b/test/built-ins/Object/defineProperties/15.2.3.7-6-a-141.js
@@ -7,22 +7,14 @@ description: >
     Object.defineProperties - 'O' is an Array, 'P' is the length
     property of 'O', test the [[Value]] field of 'desc' is a string
     which doesn't convert to a number (15.4.5.1 step 3.c)
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
-
         var arr = [];
-
-        try {
+assert.throws(RangeError, function() {
             Object.defineProperties(arr, {
                 length: {
                     value: "two"
                 }
             });
-            return false;
-        } catch (e) {
-            return e instanceof RangeError && arr.length === 0;
-        }
-    }
-runTestCase(testcase);
+});
+assert.sameValue(arr.length, 0, 'arr.length');
diff --git a/test/built-ins/Object/defineProperties/15.2.3.7-6-a-146.js b/test/built-ins/Object/defineProperties/15.2.3.7-6-a-146.js
index c257c7b6dc95073ed6984b708d5f9ee774d87614..96214d41de6a5e04c383d2aa9b2c4b61c4a7c500 100644
--- a/test/built-ins/Object/defineProperties/15.2.3.7-6-a-146.js
+++ b/test/built-ins/Object/defineProperties/15.2.3.7-6-a-146.js
@@ -8,16 +8,12 @@ description: >
     property of 'O', test TypeError is thrown when the [[Value]] field
     of 'desc' is an Object that both toString and valueOf wouldn't
     return primitive value (15.4.5.1 step 3.c)
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
-
         var arr = [];
         var toStringAccessed = false;
         var valueOfAccessed = false;
-
-        try {
+assert.throws(TypeError, function() {
             Object.defineProperties(arr, {
                 length: {
                     value: {
@@ -33,10 +29,6 @@ function testcase() {
                     }
                 }
             });
-
-            return false;
-        } catch (e) {
-            return (e instanceof TypeError) && toStringAccessed && valueOfAccessed;
-        }
-    }
-runTestCase(testcase);
+});
+assert(toStringAccessed, 'toStringAccessed !== true');
+assert(valueOfAccessed, 'valueOfAccessed !== true');
diff --git a/test/built-ins/Object/defineProperties/15.2.3.7-6-a-148.js b/test/built-ins/Object/defineProperties/15.2.3.7-6-a-148.js
index abb7e0c0ef25f5cfe7660abdb36ceeab75f8660d..d70d2214f558991af99c4f8e93b23b98ccc4aade 100644
--- a/test/built-ins/Object/defineProperties/15.2.3.7-6-a-148.js
+++ b/test/built-ins/Object/defineProperties/15.2.3.7-6-a-148.js
@@ -7,23 +7,14 @@ description: >
     Object.defineProperties - 'O' is an Array, 'name' is the length
     property of 'O',  test RangeError is thrown when the [[Value]]
     field of 'desc' is positive non-integer values (15.4.5.1 step 3.c)
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
-
         var arr = [];
-
-        try {
+assert.throws(RangeError, function() {
             Object.defineProperties(arr, {
                 length: {
                     value: 123.5
                 }
             });
-
-            return false;
-        } catch (e) {
-            return e instanceof RangeError && arr.length === 0;
-        }
-    }
-runTestCase(testcase);
+});
+assert.sameValue(arr.length, 0, 'arr.length');
diff --git a/test/built-ins/Object/defineProperties/15.2.3.7-6-a-149.js b/test/built-ins/Object/defineProperties/15.2.3.7-6-a-149.js
index 63597a0178f8e0f73b737ef4d313fe1e6ca3a954..c509c53052d3e3aeecdab68e2ad4bd01b5ae0b08 100644
--- a/test/built-ins/Object/defineProperties/15.2.3.7-6-a-149.js
+++ b/test/built-ins/Object/defineProperties/15.2.3.7-6-a-149.js
@@ -7,22 +7,14 @@ description: >
     Object.defineProperties - 'O' is an Array, 'name' is the length
     property of 'O',  test RangeError is thrown when the [[Value]]
     field of 'desc' is negative non-integer values (15.4.5.1 step 3.c)
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
-
         var arr = [];
-
-        try {
+assert.throws(RangeError, function() {
             Object.defineProperties(arr, {
                 length: {
                     value: -4294967294.5
                 }
             });
-            return false;
-        } catch (e) {
-            return e instanceof RangeError && arr.length === 0;
-        }
-    }
-runTestCase(testcase);
+});
+assert.sameValue(arr.length, 0, 'arr.length');
diff --git a/test/built-ins/Object/defineProperties/15.2.3.7-6-a-152.js b/test/built-ins/Object/defineProperties/15.2.3.7-6-a-152.js
index 3d8b21eeadc3a5df7a84c6d8ed4227c98230f987..bf9c3b8d1eac60472f7e0f668e885027b4e13ecb 100644
--- a/test/built-ins/Object/defineProperties/15.2.3.7-6-a-152.js
+++ b/test/built-ins/Object/defineProperties/15.2.3.7-6-a-152.js
@@ -7,21 +7,14 @@ description: >
     Object.defineProperties - 'O' is an Array, 'name' is the length
     property of 'O', test RangeError is thrown when the [[Value]]
     field of 'desc' is boundary value 2^32 (15.4.5.1 step 3.c)
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
-
         var arr = [];
-        try {
+assert.throws(RangeError, function() {
             Object.defineProperties(arr, {
                 length: {
                     value: 4294967296
                 }
             });
-            return false;
-        } catch (e) {
-            return e instanceof RangeError && arr.length === 0;
-        }
-    }
-runTestCase(testcase);
+});
+assert.sameValue(arr.length, 0, 'arr.length');
diff --git a/test/built-ins/Object/defineProperties/15.2.3.7-6-a-153.js b/test/built-ins/Object/defineProperties/15.2.3.7-6-a-153.js
index c443613853216a131e8b1486abc3d1a02f8d2c31..fddc31217ba3e3a33eaf725d559d7e1e22a4c75c 100644
--- a/test/built-ins/Object/defineProperties/15.2.3.7-6-a-153.js
+++ b/test/built-ins/Object/defineProperties/15.2.3.7-6-a-153.js
@@ -7,21 +7,14 @@ description: >
     Object.defineProperties - 'O' is an Array, 'name' is the length
     property of 'O', test RangeError is thrown when the [[Value]]
     field of 'desc' is boundary value 2^32 + 1 (15.4.5.1 step 3.c)
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
-
         var arr = [];
-        try {
+assert.throws(RangeError, function() {
             Object.defineProperties(arr, {
                 length: {
                     value: 4294967297
                 }
             });
-            return false;
-        } catch (e) {
-            return e instanceof RangeError && arr.length === 0;
-        }
-    }
-runTestCase(testcase);
+});
+assert.sameValue(arr.length, 0, 'arr.length');
diff --git a/test/built-ins/Object/defineProperties/15.2.3.7-6-a-158.js b/test/built-ins/Object/defineProperties/15.2.3.7-6-a-158.js
index 4c94b0a64c11648a149a8e0910c9af470e4adff9..c98990822be300ed36a5fca44413fa06114c3ea7 100644
--- a/test/built-ins/Object/defineProperties/15.2.3.7-6-a-158.js
+++ b/test/built-ins/Object/defineProperties/15.2.3.7-6-a-158.js
@@ -8,27 +8,18 @@ description: >
     property of 'O', the [[Value]] field of 'desc' is greater than
     value of the length property, test TypeError is thrown when the
     length property is not writable (15.4.5.1 step 3.f.i)
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
-
         var arr = [];
 
         Object.defineProperty(arr, "length", {
             writable: false
         });
-
-        try {
+assert.throws(TypeError, function() {
             Object.defineProperties(arr, {
                 length: {
                     value: 12
                 }
             });
-
-            return false;
-        } catch (e) {
-            return e instanceof TypeError && arr.length === 0;
-        }
-    }
-runTestCase(testcase);
+});
+assert.sameValue(arr.length, 0, 'arr.length');
diff --git a/test/built-ins/Object/defineProperties/15.2.3.7-6-a-160.js b/test/built-ins/Object/defineProperties/15.2.3.7-6-a-160.js
index 968810c4564a22a1d0bfef9fae6f3ef2b2fe0d6f..a3eb0b4b6c423d905b9cfaac29d6ae55e9fb1cd3 100644
--- a/test/built-ins/Object/defineProperties/15.2.3.7-6-a-160.js
+++ b/test/built-ins/Object/defineProperties/15.2.3.7-6-a-160.js
@@ -9,26 +9,20 @@ description: >
     of  the length property, test TypeError is thrown when the
     [[Writable]] attribute of the length property is false (15.4.5.1
     step 3.g)
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
-
         var arr = [0, 1];
 
         Object.defineProperty(arr, "length", {
             writable: false
         });
-
-        try {
+assert.throws(TypeError, function() {
             Object.defineProperties(arr, {
                 length: {
                     value: 0
                 }
             });
-            return false;
-        } catch (e) {
-            return e instanceof TypeError && arr.length === 2 && arr[0] === 0 && arr[1] === 1;
-        }
-    }
-runTestCase(testcase);
+});
+assert.sameValue(arr.length, 2, 'arr.length');
+assert.sameValue(arr[0], 0, 'arr[0]');
+assert.sameValue(arr[1], 1, 'arr[1]');
diff --git a/test/built-ins/Object/defineProperties/15.2.3.7-6-a-165.js b/test/built-ins/Object/defineProperties/15.2.3.7-6-a-165.js
index b1a2533d3d7f11600daa0b2c7f79536632106e4b..6d83613b9acdec831f2a738ecc4e5f7e9b12be80 100644
--- a/test/built-ins/Object/defineProperties/15.2.3.7-6-a-165.js
+++ b/test/built-ins/Object/defineProperties/15.2.3.7-6-a-165.js
@@ -8,11 +8,8 @@ description: >
     property of 'O', the [[Value]] field of 'desc' is less than value
     of  the length property, test the length property is decreased by
     1 (15.4.5.1 step 3.l.i)
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
-
         var arr = [0, 1, 2];
 
         Object.defineProperty(arr, "1", {
@@ -22,17 +19,14 @@ function testcase() {
         Object.defineProperty(arr, "2", {
             configurable: true
         });
-
-        try {
+assert.throws(TypeError, function() {
             Object.defineProperties(arr, {
                 length: {
                     value: 1
                 }
             });
-            return false;
-        } catch (e) {
-            return e instanceof TypeError && arr.length === 2 &&
-                !arr.hasOwnProperty("2") && arr[0] === 0 && arr[1] === 1;
-        }
-    }
-runTestCase(testcase);
+});
+assert.sameValue(arr.length, 2, 'arr.length');
+assert.sameValue(arr.hasOwnProperty("2"), false, 'arr.hasOwnProperty("2")');
+assert.sameValue(arr[0], 0, 'arr[0]');
+assert.sameValue(arr[1], 1, 'arr[1]');
diff --git a/test/built-ins/Object/defineProperties/15.2.3.7-6-a-166.js b/test/built-ins/Object/defineProperties/15.2.3.7-6-a-166.js
index 4cf79075c5b74d6ee80eba4c6c1805ab1026a772..a6bd8e38c2f38af0b34675aa01200ca798c1d83c 100644
--- a/test/built-ins/Object/defineProperties/15.2.3.7-6-a-166.js
+++ b/test/built-ins/Object/defineProperties/15.2.3.7-6-a-166.js
@@ -9,14 +9,10 @@ description: >
     of  the length property, test the [[Configurable]] attribute of
     own data property with large index named in 'O' can stop deleting
     index named properties (15.4.5.1 step 3.l.ii)
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
-
         var arr = [0, 1];
-
-        try {
+assert.throws(TypeError, function() {
             Object.defineProperty(arr, "1", {
                 configurable: false
             });
@@ -26,11 +22,8 @@ function testcase() {
                     value: 1
                 }
             });
-
-            return false;
-        } catch (e) {
-            return (e instanceof TypeError) && arr.length === 2 &&
-                arr.hasOwnProperty("1") && arr[0] === 0 && arr[1] === 1;
-        }
-    }
-runTestCase(testcase);
+});
+assert.sameValue(arr.length, 2, 'arr.length');
+assert(arr.hasOwnProperty("1"), 'arr.hasOwnProperty("1") !== true');
+assert.sameValue(arr[0], 0, 'arr[0]');
+assert.sameValue(arr[1], 1, 'arr[1]');
diff --git a/test/built-ins/Object/defineProperties/15.2.3.7-6-a-170.js b/test/built-ins/Object/defineProperties/15.2.3.7-6-a-170.js
index 78ed126d760d79cb2c07550c6832dc5258135c63..bb54504641353545b080253f968f5791a98c81a5 100644
--- a/test/built-ins/Object/defineProperties/15.2.3.7-6-a-170.js
+++ b/test/built-ins/Object/defineProperties/15.2.3.7-6-a-170.js
@@ -9,14 +9,10 @@ description: >
     of  the length property, test the [[Configurable]] attribute of
     own accessor property with large index named in 'O' can stop
     deleting index named properties (15.4.5.1 step 3.l.ii)
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
-
         var arr = [0, 1];
-
-        try {
+assert.throws(TypeError, function() {
             Object.defineProperty(arr, "1", {
                 get: function () {
                     return 1;
@@ -29,11 +25,8 @@ function testcase() {
                     value: 1
                 }
             });
-
-            return false;
-        } catch (e) {
-            return (e instanceof TypeError) && arr.length === 2 &&
-                arr.hasOwnProperty("1") && arr[0] === 0 && arr[1] === 1;
-        }
-    }
-runTestCase(testcase);
+});
+assert.sameValue(arr.length, 2, 'arr.length');
+assert(arr.hasOwnProperty("1"), 'arr.hasOwnProperty("1") !== true');
+assert.sameValue(arr[0], 0, 'arr[0]');
+assert.sameValue(arr[1], 1, 'arr[1]');
diff --git a/test/built-ins/Object/defineProperties/15.2.3.7-6-a-175.js b/test/built-ins/Object/defineProperties/15.2.3.7-6-a-175.js
index b976470a798581897e9a81c2fa0b5dfa59e1196d..c4a266ad4f4eff8cbdf718d3bc57d486c6dd6534 100644
--- a/test/built-ins/Object/defineProperties/15.2.3.7-6-a-175.js
+++ b/test/built-ins/Object/defineProperties/15.2.3.7-6-a-175.js
@@ -9,26 +9,18 @@ description: >
     of  the length property, test value of the length property is set
     to the last non-configurable index named property of 'O' plus 1
     (15.4.5.1 step 3.l.iii.1)
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
-
         var arr = [0, 1, 2, 3];
 
         Object.defineProperty(arr, "1", {
             configurable: false
         });
-
-        try {
+assert.throws(TypeError, function() {
             Object.defineProperties(arr, {
                 length: {
                     value: 1
                 }
             });
-            return false;
-        } catch (e) {
-            return (e instanceof TypeError) && (arr.length === 2);
-        }
-    }
-runTestCase(testcase);
+});
+assert.sameValue(arr.length, 2, 'arr.length');
diff --git a/test/built-ins/Object/defineProperties/15.2.3.7-6-a-184.js b/test/built-ins/Object/defineProperties/15.2.3.7-6-a-184.js
index ec10693e0d12680a336d2aba65b36f0a881e620f..3fe016ff42a2afe0f0458dc72f6e9997e9062d8a 100644
--- a/test/built-ins/Object/defineProperties/15.2.3.7-6-a-184.js
+++ b/test/built-ins/Object/defineProperties/15.2.3.7-6-a-184.js
@@ -8,27 +8,21 @@ description: >
     'P' is an array index named property,[[Writable]] attribute of the
     length property in 'O' is false, value of 'P' is equal to value of
     the length property in 'O' (15.4.5.1 step 4.b)
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
         var arr = [1, 2, 3];
 
         Object.defineProperty(arr, "length", {
             writable: false
         });
-
-        try {
+assert.throws(TypeError, function() {
             Object.defineProperties(arr, {
                 "3": {
                     value: "abc"
                 }
             });
-
-            return false;
-        } catch (e) {
-            return e instanceof TypeError && arr[0] === 1 &&
-                arr[1] === 2 && arr[2] === 3 && !arr.hasOwnProperty("3");
-        }
-    }
-runTestCase(testcase);
+});
+assert.sameValue(arr[0], 1, 'arr[0]');
+assert.sameValue(arr[1], 2, 'arr[1]');
+assert.sameValue(arr[2], 3, 'arr[2]');
+assert.sameValue(arr.hasOwnProperty("3"), false, 'arr.hasOwnProperty("3")');
diff --git a/test/built-ins/Object/defineProperties/15.2.3.7-6-a-185.js b/test/built-ins/Object/defineProperties/15.2.3.7-6-a-185.js
index 293ebe520534c7ff7c79871ec404ce039ac913e7..3698753c54db0f40f09d45ff827a09e83fb8174d 100644
--- a/test/built-ins/Object/defineProperties/15.2.3.7-6-a-185.js
+++ b/test/built-ins/Object/defineProperties/15.2.3.7-6-a-185.js
@@ -8,27 +8,22 @@ description: >
     'P' is an array index named property,[[Writable]] attribute of the
     length property in 'O' is false, value of 'P' is bigger than value
     of the length property in 'O'  (15.4.5.1 step 4.b)
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
         var arr = [1, 2, 3];
 
         Object.defineProperty(arr, "length", {
             writable: false
         });
-
-        try {
+assert.throws(TypeError, function() {
             Object.defineProperties(arr, {
                 "4": {
                     value: "abc"
                 }
             });
-
-            return false;
-        } catch (e) {
-            return e instanceof TypeError && arr[0] === 1 && arr[1] === 2 &&
-                arr[2] === 3 && !arr.hasOwnProperty("3") && !arr.hasOwnProperty("4");
-        }
-    }
-runTestCase(testcase);
+});
+assert.sameValue(arr[0], 1, 'arr[0]');
+assert.sameValue(arr[1], 2, 'arr[1]');
+assert.sameValue(arr[2], 3, 'arr[2]');
+assert.sameValue(arr.hasOwnProperty("3"), false, 'arr.hasOwnProperty("3")');
+assert.sameValue(arr.hasOwnProperty("4"), false, 'arr.hasOwnProperty("4")');
diff --git a/test/built-ins/Object/defineProperties/15.2.3.7-6-a-186.js b/test/built-ins/Object/defineProperties/15.2.3.7-6-a-186.js
index 78f495b7d45c4096311ca07f0588cc8337734aaa..e5f5943f622d59c355a047d9e6738a2de48d491f 100644
--- a/test/built-ins/Object/defineProperties/15.2.3.7-6-a-186.js
+++ b/test/built-ins/Object/defineProperties/15.2.3.7-6-a-186.js
@@ -6,26 +6,19 @@ es5id: 15.2.3.7-6-a-186
 description: >
     Object.defineProperties - 'O' is an Array, 'P' is an array index
     named property, 'P' is own data property  (15.4.5.1 step 4.c)
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
         var arr = [];
         Object.defineProperty(arr, 0, {
             value: "ownDataProperty",
             configurable: false
         });
-
-        try {
+assert.throws(TypeError, function() {
             Object.defineProperties(arr, {
                 "0": {
                     value: "abc",
                     configurable: true
                 }
             });
-            return false;
-        } catch (e) {
-            return e instanceof TypeError && arr[0] === "ownDataProperty";
-        }
-    }
-runTestCase(testcase);
+});
+assert.sameValue(arr[0], "ownDataProperty", 'arr[0]');
diff --git a/test/built-ins/Object/defineProperties/15.2.3.7-6-a-190.js b/test/built-ins/Object/defineProperties/15.2.3.7-6-a-190.js
index 936a9f811b1323e91a43f1bfbc0c9022be024175..7ecdc01b2d0c1c99836bc793cd8e90037eca79d3 100644
--- a/test/built-ins/Object/defineProperties/15.2.3.7-6-a-190.js
+++ b/test/built-ins/Object/defineProperties/15.2.3.7-6-a-190.js
@@ -6,10 +6,8 @@ es5id: 15.2.3.7-6-a-190
 description: >
     Object.defineProperties - 'O' is an Array, 'P' is an array index
     named property, 'P' is own accessor property  (15.4.5.1 step 4.c)
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
         var arr = [];
 
         Object.defineProperty(arr, "0", {
@@ -18,8 +16,7 @@ function testcase() {
             },
             configurable: false
         });
-
-        try {
+assert.throws(TypeError, function() {
             Object.defineProperties(arr, {
                 "0": {
                     get: function () {
@@ -28,9 +25,5 @@ function testcase() {
                     configurable: true
                 }
             });
-            return false;
-        } catch (e) {
-            return e instanceof TypeError && arr[0] === 11;
-        }
-    }
-runTestCase(testcase);
+});
+assert.sameValue(arr[0], 11, 'arr[0]');
diff --git a/test/built-ins/Object/defineProperties/15.2.3.7-6-a-194.js b/test/built-ins/Object/defineProperties/15.2.3.7-6-a-194.js
index 5a1858f962f7856abd9fdd8cb2b6ea3fcec94e70..7241a38ef747ee88a86e2d8db41e4239f2b5748d 100644
--- a/test/built-ins/Object/defineProperties/15.2.3.7-6-a-194.js
+++ b/test/built-ins/Object/defineProperties/15.2.3.7-6-a-194.js
@@ -7,22 +7,15 @@ description: >
     Object.defineProperties - 'O' is an Array, 'P' is an array index
     named property, 'P' property doesn't exist in 'O', test TypeError
     is thrown when 'O' is not extensible  (15.4.5.1 step 4.c)
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
         var arr = [];
         Object.preventExtensions(arr);
-
-        try {
+assert.throws(TypeError, function() {
             Object.defineProperties(arr, {
                 "0": {
                     value: 1
                 }
             });
-            return false;
-        } catch (e) {
-            return (e instanceof TypeError) && (arr.hasOwnProperty("0") === false);
-        }
-    }
-runTestCase(testcase);
+});
+assert.sameValue(arr.hasOwnProperty("0"), false, 'arr.hasOwnProperty("0")');
diff --git a/test/built-ins/Object/defineProperties/15.2.3.7-6-a-22.js b/test/built-ins/Object/defineProperties/15.2.3.7-6-a-22.js
index 83ec6d5b2659a09af210296a794ddcafa066546a..03026ecbe3bb7a16db2ba679d1b9630d3f867f97 100644
--- a/test/built-ins/Object/defineProperties/15.2.3.7-6-a-22.js
+++ b/test/built-ins/Object/defineProperties/15.2.3.7-6-a-22.js
@@ -7,10 +7,8 @@ description: >
     Object.defineProperties - 'O' is the Arguments object which
     implements its own [[GetOwnProperty]] method to get 'P' (8.12.9
     step 1 )
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
         var arg = function () {
             return arguments;
         }();
@@ -19,17 +17,11 @@ function testcase() {
             value: 11,
             configurable: false
         });
-
-        try {
+assert.throws(TypeError, function() {
             Object.defineProperties(arg, {
                 prop: {
                     value: 12,
                     configurable: true
                 }
             });
-            return false;
-        } catch (e) {
-            return (e instanceof TypeError);
-        }
-    }
-runTestCase(testcase);
+});
diff --git a/test/built-ins/Object/defineProperties/15.2.3.7-6-a-25.js b/test/built-ins/Object/defineProperties/15.2.3.7-6-a-25.js
index 9dad1635382b260ae9f7eea00ffc0e6a28924c27..3597664afaafb6b16e9b79081588365acd48e51c 100644
--- a/test/built-ins/Object/defineProperties/15.2.3.7-6-a-25.js
+++ b/test/built-ins/Object/defineProperties/15.2.3.7-6-a-25.js
@@ -6,23 +6,16 @@ es5id: 15.2.3.7-6-a-25
 description: >
     Object.defineProperties - 'P' doesn't exist in 'O', test TypeError
     is thrown when 'O' is not extensible (8.12.9 step 3)
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
         var obj = {};
         Object.preventExtensions(obj);
-
-        try {
+assert.throws(TypeError, function() {
             Object.defineProperties(obj, {
                 prop: {
                     value: 12,
                     configurable: true
                 }
             });
-            return false;
-        } catch (e) {
-            return e instanceof TypeError && !obj.hasOwnProperty("prop");
-        }
-    }
-runTestCase(testcase);
+});
+assert.sameValue(obj.hasOwnProperty("prop"), false, 'obj.hasOwnProperty("prop")');
diff --git a/test/built-ins/Object/defineProperties/15.2.3.7-6-a-286.js b/test/built-ins/Object/defineProperties/15.2.3.7-6-a-286.js
index 38efcf4b75bbabcea5e545def0adcd54edc5fa87..c65a852dc123c00b964a07712e3a2ec65afa3c29 100644
--- a/test/built-ins/Object/defineProperties/15.2.3.7-6-a-286.js
+++ b/test/built-ins/Object/defineProperties/15.2.3.7-6-a-286.js
@@ -9,11 +9,8 @@ description: >
     of 'O', test TypeError is thrown when updating the [[Get]]
     attribute value of 'P' which is defined as non-configurable (10.6
     [[DefineOwnProperty]] step 4)
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
-
         var arg;
 
         (function fun(a, b, c) {
@@ -33,18 +30,15 @@ function testcase() {
         function get_func2() {
             return 10;
         }
-        try {
+assert.throws(TypeError, function() {
             Object.defineProperties(arg, {
                 "0": {
                     get: get_func2
                 }
             });
-
-            return false;
-        } catch (e) {
+});
             var desc = Object.getOwnPropertyDescriptor(arg, "0");
-            return e instanceof TypeError && desc.get === get_func1 && typeof desc.set === "undefined" &&
-                desc.enumerable === false && desc.configurable === false;
-        }
-    }
-runTestCase(testcase);
+assert.sameValue(desc.get, get_func1, 'desc.get');
+assert.sameValue(typeof desc.set, "undefined", 'typeof desc.set');
+assert.sameValue(desc.enumerable, false, 'desc.enumerable');
+assert.sameValue(desc.configurable, false, 'desc.configurable');
diff --git a/test/built-ins/Object/defineProperties/15.2.3.7-6-a-287.js b/test/built-ins/Object/defineProperties/15.2.3.7-6-a-287.js
index d30df0a2958ba2476f55ace625c58b14529e9e9e..798298cf88ebc623793b3d2178daf076003a71b5 100644
--- a/test/built-ins/Object/defineProperties/15.2.3.7-6-a-287.js
+++ b/test/built-ins/Object/defineProperties/15.2.3.7-6-a-287.js
@@ -9,11 +9,8 @@ description: >
     of 'O', test TypeError is thrown when updating the [[Set]]
     attribute value of 'P' which is defined as non-configurable (10.6
     [[DefineOwnProperty]] step 4)
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
-
         var arg;
 
         (function fun(a, b, c) {
@@ -34,18 +31,15 @@ function testcase() {
         function set_func(value) {
             arg.setVerifyHelpProp = value;
         }
-        try {
+assert.throws(TypeError, function() {
             Object.defineProperties(arg, {
                 "0": {
                     set: set_func
                 }
             });
-
-            return false;
-        } catch (e) {
+});
             var desc = Object.getOwnPropertyDescriptor(arg, "0");
-            return e instanceof TypeError && desc.get === get_func && typeof desc.set === "undefined" &&
-                desc.enumerable === false && desc.configurable === false;
-        }
-    }
-runTestCase(testcase);
+assert.sameValue(desc.get, get_func, 'desc.get');
+assert.sameValue(typeof desc.set, "undefined", 'typeof desc.set');
+assert.sameValue(desc.enumerable, false, 'desc.enumerable');
+assert.sameValue(desc.configurable, false, 'desc.configurable');
diff --git a/test/built-ins/Object/defineProperties/15.2.3.7-6-a-3.js b/test/built-ins/Object/defineProperties/15.2.3.7-6-a-3.js
index c6b961343f39edcbe322664d073bd06578015cad..aa93f1f028a9e9065fae265a64bfa8c27edd6de5 100644
--- a/test/built-ins/Object/defineProperties/15.2.3.7-6-a-3.js
+++ b/test/built-ins/Object/defineProperties/15.2.3.7-6-a-3.js
@@ -6,10 +6,8 @@ es5id: 15.2.3.7-6-a-3
 description: >
     Object.defineProperties - 'P' is own data property that overrides
     an inherited data property (8.12.9 step 1 )
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
         var proto = {};
         Object.defineProperty(proto, "prop", {
             value: 11,
@@ -23,17 +21,11 @@ function testcase() {
             value: 12,
             configurable: false
         });
-
-        try {
+assert.throws(TypeError, function() {
             Object.defineProperties(obj, {
                 prop: {
                     value: 13,
                     configurable: true
                 }
             });
-            return false;
-        } catch (e) {
-            return (e instanceof TypeError);
-        }
-    }
-runTestCase(testcase);
+});
diff --git a/test/built-ins/Object/defineProperties/15.2.3.7-6-a-4.js b/test/built-ins/Object/defineProperties/15.2.3.7-6-a-4.js
index 5f2b8c72033fc0677447a5f2cbcfbcbc6242184a..e1c624b55104154071bbc660f3ac7235aa758eae 100644
--- a/test/built-ins/Object/defineProperties/15.2.3.7-6-a-4.js
+++ b/test/built-ins/Object/defineProperties/15.2.3.7-6-a-4.js
@@ -6,10 +6,8 @@ es5id: 15.2.3.7-6-a-4
 description: >
     Object.defineProperties - 'P' is own data property that overrides
     an inherited accessor property (8.12.9 step 1 )
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
         var proto = {};
         Object.defineProperty(proto, "prop", {
             get: function () {
@@ -25,17 +23,11 @@ function testcase() {
             value: 12,
             configurable: false
         });
-
-        try {
+assert.throws(TypeError, function() {
             Object.defineProperties(obj, {
                 prop: {
                     value: 13,
                     configurable: true
                 }
             });
-            return false;
-        } catch (e) {
-            return (e instanceof TypeError);
-        }
-    }
-runTestCase(testcase);
+});
diff --git a/test/built-ins/Object/defineProperties/15.2.3.7-6-a-7.js b/test/built-ins/Object/defineProperties/15.2.3.7-6-a-7.js
index 0c746d7d4578eb6a6976c814089845081b759e7f..f46b1a03ae335b4ce377722df68b39b9377f75b3 100644
--- a/test/built-ins/Object/defineProperties/15.2.3.7-6-a-7.js
+++ b/test/built-ins/Object/defineProperties/15.2.3.7-6-a-7.js
@@ -6,10 +6,8 @@ es5id: 15.2.3.7-6-a-7
 description: >
     Object.defineProperties - 'P' is own accessor property that
     overrides an inherited data property (8.12.9 step 1 )
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
         var proto = {};
         Object.defineProperty(proto, "prop", {
             value: 11,
@@ -25,17 +23,12 @@ function testcase() {
             },
             configurable: false
         });
-
-        try {
+assert.throws(TypeError, function() {
             Object.defineProperties(obj, {
                 prop: {
                     value: 13,
                     configurable: true
                 }
             });
-            return false;
-        } catch (e) {
-            return (e instanceof TypeError) && obj.prop === 12;
-        }
-    }
-runTestCase(testcase);
+});
+assert.sameValue(obj.prop, 12, 'obj.prop');
diff --git a/test/built-ins/Object/defineProperties/15.2.3.7-6-a-8.js b/test/built-ins/Object/defineProperties/15.2.3.7-6-a-8.js
index 6a11a0b30989eef39b471b68449ca9cc345932a2..923f4fdc9b555d09e03c4b9f36426b68964a3cf0 100644
--- a/test/built-ins/Object/defineProperties/15.2.3.7-6-a-8.js
+++ b/test/built-ins/Object/defineProperties/15.2.3.7-6-a-8.js
@@ -6,10 +6,8 @@ es5id: 15.2.3.7-6-a-8
 description: >
     Object.defineProperties - 'P' is own accessor property that
     overrides an inherited accessor property (8.12.9 step 1 )
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
         var proto = {};
         Object.defineProperty(proto, "prop", {
             get: function() {
@@ -27,17 +25,12 @@ function testcase() {
             },
             configurable: false
         });
-
-        try {
+assert.throws(TypeError, function() {
             Object.defineProperties(obj, {
                 prop: {
                     value: 13,
                     configurable: true
                 }
             });
-            return false;
-        } catch (e) {
-            return (e instanceof TypeError) && obj.prop === 12;
-        }
-    }
-runTestCase(testcase);
+});
+assert.sameValue(obj.prop, 12, 'obj.prop');
diff --git a/test/built-ins/Object/defineProperties/15.2.3.7-6-a-9.js b/test/built-ins/Object/defineProperties/15.2.3.7-6-a-9.js
index e5934a5907549aacb5dc5cf369e2b124a05c6443..1b703ad31e44e9c0ab2bf5956e7b8ff01166ac3a 100644
--- a/test/built-ins/Object/defineProperties/15.2.3.7-6-a-9.js
+++ b/test/built-ins/Object/defineProperties/15.2.3.7-6-a-9.js
@@ -6,26 +6,18 @@ es5id: 15.2.3.7-6-a-9
 description: >
     Object.defineProperties - 'P' is own accessor property without a
     get function (8.12.9 step 1 )
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
         var obj = {};
         Object.defineProperty(obj, "prop", {
             set: function () { },
             configurable: false
         });
-
-        try {
+assert.throws(TypeError, function() {
             Object.defineProperties(obj, {
                 prop: {
                     get: function () { },
                     configurable: true
                 }
             });
-            return false;
-        } catch (e) {
-            return (e instanceof TypeError);
-        }
-    }
-runTestCase(testcase);
+});
diff --git a/test/built-ins/Object/defineProperty/15.2.3.6-1-1.js b/test/built-ins/Object/defineProperty/15.2.3.6-1-1.js
index 2e7cae54eceac083a1b95f46185d1a44775bf800..07851ab52a50e6ccbe9237e9c740ffcfd1336d17 100644
--- a/test/built-ins/Object/defineProperty/15.2.3.6-1-1.js
+++ b/test/built-ins/Object/defineProperty/15.2.3.6-1-1.js
@@ -4,15 +4,8 @@
 /*---
 es5id: 15.2.3.6-1-1
 description: Object.defineProperty applied to undefined throws a TypeError
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
-        try {
+assert.throws(TypeError, function() {
             Object.defineProperty(undefined, "foo", {});
-            return false;
-        } catch (e) {
-            return e instanceof TypeError;
-        }
-    }
-runTestCase(testcase);
+});
diff --git a/test/built-ins/Object/defineProperty/15.2.3.6-1-2.js b/test/built-ins/Object/defineProperty/15.2.3.6-1-2.js
index e2a39b24692fd2f38ea95c4c8a80751c1c6b5397..ad1ef64aaa9330b8b8b0cc8e8933595ff5ac4d0f 100644
--- a/test/built-ins/Object/defineProperty/15.2.3.6-1-2.js
+++ b/test/built-ins/Object/defineProperty/15.2.3.6-1-2.js
@@ -4,15 +4,8 @@
 /*---
 es5id: 15.2.3.6-1-2
 description: Object.defineProperty applied to null throws a TypeError
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
-        try {
+assert.throws(TypeError, function() {
             Object.defineProperty(null, "foo", {});
-            return false;
-        } catch (e) {
-            return e instanceof TypeError;
-        }
-    }
-runTestCase(testcase);
+});
diff --git a/test/built-ins/Object/defineProperty/15.2.3.6-1-3.js b/test/built-ins/Object/defineProperty/15.2.3.6-1-3.js
index b9b43408550947b290c38e4234b7bc2164fad5ef..7fac12e1be565f6dd49bff0eac3ce9caa7127587 100644
--- a/test/built-ins/Object/defineProperty/15.2.3.6-1-3.js
+++ b/test/built-ins/Object/defineProperty/15.2.3.6-1-3.js
@@ -6,15 +6,8 @@ es5id: 15.2.3.6-1-3
 description: >
     Object.defineProperty applied to number primitive throws a
     TypeError
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
-        try {
+assert.throws(TypeError, function() {
             Object.defineProperty(5, "foo", {});
-            return false;
-        } catch (e) {
-            return e instanceof TypeError;
-        }
-    }
-runTestCase(testcase);
+});
diff --git a/test/built-ins/Object/defineProperty/15.2.3.6-1-4.js b/test/built-ins/Object/defineProperty/15.2.3.6-1-4.js
index 3c3292f3b5ce97fb401644d953203de163173758..2f0f774641e4fc9c2048629ff1b0b0ec8a13fb73 100644
--- a/test/built-ins/Object/defineProperty/15.2.3.6-1-4.js
+++ b/test/built-ins/Object/defineProperty/15.2.3.6-1-4.js
@@ -6,15 +6,8 @@ es5id: 15.2.3.6-1-4
 description: >
     Object.defineProperty applied to string primitive throws a
     TypeError
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
-        try {
+assert.throws(TypeError, function() {
             Object.defineProperty("hello\nworld\\!", "foo", {});
-            return false;
-        } catch (e) {
-            return e instanceof TypeError;
-        }
-    }
-runTestCase(testcase);
+});
diff --git a/test/built-ins/Object/defineProperty/15.2.3.6-1.js b/test/built-ins/Object/defineProperty/15.2.3.6-1.js
index c914dc7bccf57ef8834f58147332e940d8a2bef4..c3459ee28ef9e22b5d50dbe1d5736d017c6abc80 100644
--- a/test/built-ins/Object/defineProperty/15.2.3.6-1.js
+++ b/test/built-ins/Object/defineProperty/15.2.3.6-1.js
@@ -6,17 +6,8 @@ es5id: 15.2.3.6-1
 description: >
     Object.defineProperty throws TypeError if type of first param is
     not Object
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
-    try {
+assert.throws(TypeError, function() {
       Object.defineProperty(true, "foo", {});
-    }
-    catch (e) {
-      if (e instanceof TypeError) {
-        return true;
-      }
-    }
- }
-runTestCase(testcase);
+});
diff --git a/test/built-ins/Object/defineProperty/15.2.3.6-2-47.js b/test/built-ins/Object/defineProperty/15.2.3.6-2-47.js
index e1d7435b055d276891c5bf5aabcadb2e7009ff51..1fa4963c1a4b7636a238d50ffebbaa7ad0a2ce19 100644
--- a/test/built-ins/Object/defineProperty/15.2.3.6-2-47.js
+++ b/test/built-ins/Object/defineProperty/15.2.3.6-2-47.js
@@ -7,10 +7,8 @@ description: >
     Object.defineProperty - TypeError exception is thrown  when 'P' is
     an object that neither toString nor valueOf returns a primitive
     value
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
         var obj = {};
         var toStringAccessed = false;
         var valueOfAccessed = false;
@@ -25,12 +23,8 @@ function testcase() {
                 return {};
             }
         };
-
-        try {
+assert.throws(TypeError, function() {
             Object.defineProperty(obj, ownProp, {});
-            return false;
-        } catch (e) {
-            return valueOfAccessed && toStringAccessed && e instanceof TypeError;
-        }
-    }
-runTestCase(testcase);
+});
+assert(valueOfAccessed, 'valueOfAccessed !== true');
+assert(toStringAccessed, 'toStringAccessed !== true');
diff --git a/test/built-ins/Object/defineProperty/15.2.3.6-3-1.js b/test/built-ins/Object/defineProperty/15.2.3.6-3-1.js
index cd3a857fd32fb13acdf61d8c7f29e9cc803ae516..2dcf9d66973804a8c492dfa447bed6db2ce1be58 100644
--- a/test/built-ins/Object/defineProperty/15.2.3.6-3-1.js
+++ b/test/built-ins/Object/defineProperty/15.2.3.6-3-1.js
@@ -10,24 +10,14 @@ es5id: 15.2.3.6-3-1
 description: >
     Object.defineProperty throws TypeError if desc has 'get' and
     'value' present(8.10.5 step 9.a)
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
     var o = {};
 
     // dummy getter
     var getter = function () { return 1; }
     var desc = { get: getter, value: 101};
-  
-    try {
+assert.throws(TypeError, function() {
       Object.defineProperty(o, "foo", desc);
-    }
-    catch (e) {
-      if (e instanceof TypeError &&
-          (o.hasOwnProperty("foo") === false)) {
-        return true;
-      }
-    }
- }
-runTestCase(testcase);
+});
+assert.sameValue(o.hasOwnProperty("foo"), false, 'o.hasOwnProperty("foo")');
diff --git a/test/built-ins/Object/defineProperty/15.2.3.6-3-10.js b/test/built-ins/Object/defineProperty/15.2.3.6-3-10.js
index d8ac440cf93643f4c9b6743dcb8c363e77620120..aa3bc8ca8c177e87e0072c9e919d7cae360b3f18 100644
--- a/test/built-ins/Object/defineProperty/15.2.3.6-3-10.js
+++ b/test/built-ins/Object/defineProperty/15.2.3.6-3-10.js
@@ -10,24 +10,14 @@ es5id: 15.2.3.6-3-10
 description: >
     Object.defineProperty throws TypeError if setter is not callable
     but not undefined (Number)(8.10.5 step 8.b)
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
     var o = {};
     
     // dummy setter
     var setter = 42;
     var desc = { set: setter };
-    
-    try {
+assert.throws(TypeError, function() {
       Object.defineProperty(o, "foo", desc);
-    }
-    catch (e) {
-      if (e instanceof TypeError &&
-          (o.hasOwnProperty("foo") === false)) {
-        return true;
-      }
-    }
- }
-runTestCase(testcase);
+});
+assert.sameValue(o.hasOwnProperty("foo"), false, 'o.hasOwnProperty("foo")');
diff --git a/test/built-ins/Object/defineProperty/15.2.3.6-3-11.js b/test/built-ins/Object/defineProperty/15.2.3.6-3-11.js
index 2af0b34957eb5d3e48f2d54a6faf1822b7c0ebfa..fb3a335b5610ba0470eaf9ad198b478740582620 100644
--- a/test/built-ins/Object/defineProperty/15.2.3.6-3-11.js
+++ b/test/built-ins/Object/defineProperty/15.2.3.6-3-11.js
@@ -10,24 +10,14 @@ es5id: 15.2.3.6-3-11
 description: >
     Object.defineProperty throws TypeError if setter is not callable
     but not undefined (Boolean)(8.10.5 step 8.b)
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
     var o = {};
     
     // dummy setter
     var setter = true;
     var desc = { set: setter };
-    
-    try {
+assert.throws(TypeError, function() {
       Object.defineProperty(o, "foo", desc);
-    }
-    catch (e) {
-      if (e instanceof TypeError &&
-          (o.hasOwnProperty("foo") === false)) {
-        return true;
-      }
-    }
- }
-runTestCase(testcase);
+});
+assert.sameValue(o.hasOwnProperty("foo"), false, 'o.hasOwnProperty("foo")');
diff --git a/test/built-ins/Object/defineProperty/15.2.3.6-3-12.js b/test/built-ins/Object/defineProperty/15.2.3.6-3-12.js
index d14a9006e8e3925019e518a15117394b6f7deca7..6435a0d7a4b5cd0dab3439484174b525c488e7f1 100644
--- a/test/built-ins/Object/defineProperty/15.2.3.6-3-12.js
+++ b/test/built-ins/Object/defineProperty/15.2.3.6-3-12.js
@@ -10,24 +10,14 @@ es5id: 15.2.3.6-3-12
 description: >
     Object.defineProperty throws TypeError if setter is not callable
     but not undefined (String)(8.10.5 step 8.b)
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
     var o = {};
     
     // dummy setter
     var setter = "abc";
     var desc = { set: setter };
-    
-    try {
+assert.throws(TypeError, function() {
       Object.defineProperty(o, "foo", desc);
-    }
-    catch (e) {
-      if (e instanceof TypeError &&
-          (o.hasOwnProperty("foo") === false)) {
-        return true;
-      }
-    }
- }
-runTestCase(testcase);
+});
+assert.sameValue(o.hasOwnProperty("foo"), false, 'o.hasOwnProperty("foo")');
diff --git a/test/built-ins/Object/defineProperty/15.2.3.6-3-13.js b/test/built-ins/Object/defineProperty/15.2.3.6-3-13.js
index 311f910aaddb98d5e2d037e72ba61effcb2eaf1d..dfd980d6a21984d9d68c1ec48ea5d608049a03a5 100644
--- a/test/built-ins/Object/defineProperty/15.2.3.6-3-13.js
+++ b/test/built-ins/Object/defineProperty/15.2.3.6-3-13.js
@@ -10,24 +10,14 @@ es5id: 15.2.3.6-3-13
 description: >
     Object.defineProperty throws TypeError if the setter in desc is
     not callable (Null)(8.10.5 step 8.b)
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
     var o = {};
     
     // dummy setter
     var setter = null;
     var desc = { set: setter };
-    
-    try {
+assert.throws(TypeError, function() {
       Object.defineProperty(o, "foo", desc);
-    }
-    catch (e) {
-      if (e instanceof TypeError &&
-          (o.hasOwnProperty("foo") === false)) {
-        return true;
-      }
-    }
- }
-runTestCase(testcase);
+});
+assert.sameValue(o.hasOwnProperty("foo"), false, 'o.hasOwnProperty("foo")');
diff --git a/test/built-ins/Object/defineProperty/15.2.3.6-3-14.js b/test/built-ins/Object/defineProperty/15.2.3.6-3-14.js
index e77f34afc90bbe6648879e306ff334b0a9ef3a80..0ae2a83500573190daea49d7efc1cacaf6972e49 100644
--- a/test/built-ins/Object/defineProperty/15.2.3.6-3-14.js
+++ b/test/built-ins/Object/defineProperty/15.2.3.6-3-14.js
@@ -10,24 +10,14 @@ es5id: 15.2.3.6-3-14
 description: >
     Object.defineProperty throws TypeError if setter is not callable
     but not undefined (Object)(8.10.5 step 8.b)
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
     var o = {};
     
     // dummy getter
     var setter = { a: 1 };
     var desc = { set: setter };
-    
-    try {
+assert.throws(TypeError, function() {
       Object.defineProperty(o, "foo", desc);
-    }
-    catch (e) {
-      if (e instanceof TypeError &&
-          (o.hasOwnProperty("foo") === false)) {
-        return true;
-      }
-    }
- }
-runTestCase(testcase);
+});
+assert.sameValue(o.hasOwnProperty("foo"), false, 'o.hasOwnProperty("foo")');
diff --git a/test/built-ins/Object/defineProperty/15.2.3.6-3-15.js b/test/built-ins/Object/defineProperty/15.2.3.6-3-15.js
index fa8505aa046c434f6f66229eb3415b256d9d6bb0..03bca14f13ed929531c2b3ae94f88f2c8349a9f5 100644
--- a/test/built-ins/Object/defineProperty/15.2.3.6-3-15.js
+++ b/test/built-ins/Object/defineProperty/15.2.3.6-3-15.js
@@ -4,18 +4,9 @@
 /*---
 es5id: 15.2.3.6-3-15
 description: Object.defineProperty - 'Attributes' is undefined  (8.10.5 step 1)
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
-
         var obj = {};
-
-        try {
+assert.throws(TypeError, function() {
             Object.defineProperty(obj, "property", undefined);
-            return false;
-        } catch (e) {
-            return e instanceof TypeError;
-        }
-    }
-runTestCase(testcase);
+});
diff --git a/test/built-ins/Object/defineProperty/15.2.3.6-3-16.js b/test/built-ins/Object/defineProperty/15.2.3.6-3-16.js
index f69e46b1b88687e1173632cff2cc15562e4d2df1..e56a08412e58e4628a44c4ae6d0a00a8c2df4c11 100644
--- a/test/built-ins/Object/defineProperty/15.2.3.6-3-16.js
+++ b/test/built-ins/Object/defineProperty/15.2.3.6-3-16.js
@@ -4,16 +4,8 @@
 /*---
 es5id: 15.2.3.6-3-16
 description: Object.defineProperty - 'Attributes' is null (8.10.5 step 1)
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
-
-        try {
+assert.throws(TypeError, function() {
             Object.defineProperty({}, "property", null);
-            return false;
-        } catch (e) {
-            return e instanceof TypeError;
-        }
-    }
-runTestCase(testcase);
+});
diff --git a/test/built-ins/Object/defineProperty/15.2.3.6-3-17.js b/test/built-ins/Object/defineProperty/15.2.3.6-3-17.js
index 21e9cf4d29e38bca31c3bb870930b1b075d7f74a..855ddf4b2ea8c0a4e6e9fcae41a3f54dbe97be92 100644
--- a/test/built-ins/Object/defineProperty/15.2.3.6-3-17.js
+++ b/test/built-ins/Object/defineProperty/15.2.3.6-3-17.js
@@ -6,16 +6,8 @@ es5id: 15.2.3.6-3-17
 description: >
     Object.defineProperty - 'Attributes' is a boolean primitive
     (8.10.5 step 1)
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
-
-        try {
+assert.throws(TypeError, function() {
             Object.defineProperty({}, "property", true);
-            return false;
-        } catch (e) {
-            return e instanceof TypeError;
-        }
-    }
-runTestCase(testcase);
+});
diff --git a/test/built-ins/Object/defineProperty/15.2.3.6-3-18.js b/test/built-ins/Object/defineProperty/15.2.3.6-3-18.js
index b3cb2ae4ee721a947c82a6056392d4fd99c7b47e..c2f3bcd6734637ef47583212e4fb4474fe8db14d 100644
--- a/test/built-ins/Object/defineProperty/15.2.3.6-3-18.js
+++ b/test/built-ins/Object/defineProperty/15.2.3.6-3-18.js
@@ -6,16 +6,8 @@ es5id: 15.2.3.6-3-18
 description: >
     Object.defineProperty - 'Attributes' is a number primitive (8.10.5
     step 1)
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
-
-        try {
+assert.throws(TypeError, function() {
             Object.defineProperty({}, "property", 12);
-            return false;
-        } catch (e) {
-            return e instanceof TypeError;
-        }
-    }
-runTestCase(testcase);
+});
diff --git a/test/built-ins/Object/defineProperty/15.2.3.6-3-19.js b/test/built-ins/Object/defineProperty/15.2.3.6-3-19.js
index 4ea8af8ed578b906cb336128be2d1f28e69c65e6..c108213483099dba0f055ebe44fa7acadb638977 100644
--- a/test/built-ins/Object/defineProperty/15.2.3.6-3-19.js
+++ b/test/built-ins/Object/defineProperty/15.2.3.6-3-19.js
@@ -6,16 +6,8 @@ es5id: 15.2.3.6-3-19
 description: >
     Object.defineProperty - 'Attributes' is a string primitive (8.10.5
     step 1)
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
-
-        try {
+assert.throws(TypeError, function() {
             Object.defineProperty({}, "property", "abc");
-            return false;
-        } catch (e) {
-            return e instanceof TypeError;
-        }
-    }
-runTestCase(testcase);
+});
diff --git a/test/built-ins/Object/defineProperty/15.2.3.6-3-2.js b/test/built-ins/Object/defineProperty/15.2.3.6-3-2.js
index c42ad2d38408eeabd2e488c38b4482d995767a60..768645e349f1f1166ae58b1e5637d7f57fcaa14f 100644
--- a/test/built-ins/Object/defineProperty/15.2.3.6-3-2.js
+++ b/test/built-ins/Object/defineProperty/15.2.3.6-3-2.js
@@ -10,24 +10,14 @@ es5id: 15.2.3.6-3-2
 description: >
     Object.defineProperty throws TypeError if desc has 'get' and
     'writable' present(8.10.5 step 9.a)
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
     var o = {};
     
     // dummy getter
     var getter = function () { return 1; }
     var desc = { get: getter, writable: false };
-    
-    try {
+assert.throws(TypeError, function() {
       Object.defineProperty(o, "foo", desc);
-    }
-    catch (e) {
-      if (e instanceof TypeError &&
-          (o.hasOwnProperty("foo") === false)) {
-        return true;
-      }
-    }
- }
-runTestCase(testcase);
+});
+assert.sameValue(o.hasOwnProperty("foo"), false, 'o.hasOwnProperty("foo")');
diff --git a/test/built-ins/Object/defineProperty/15.2.3.6-3-3.js b/test/built-ins/Object/defineProperty/15.2.3.6-3-3.js
index a3a8ef7d4484ad56894c8ca5a504453d79c1b413..7a254a689b7682b110e4859dcae9f04b61223ea9 100644
--- a/test/built-ins/Object/defineProperty/15.2.3.6-3-3.js
+++ b/test/built-ins/Object/defineProperty/15.2.3.6-3-3.js
@@ -10,24 +10,14 @@ es5id: 15.2.3.6-3-3
 description: >
     Object.defineProperty throws TypeError if desc has 'set' and
     'value' present(8.10.5 step 9.a)
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
     var o = {};
 
     // dummy setter
     var setter = function () { }
     var desc = { set: setter, value: 101};
-    
-    try {
+assert.throws(TypeError, function() {
       Object.defineProperty(o, "foo", desc);
-    }
-    catch (e) {
-      if (e instanceof TypeError &&
-          (o.hasOwnProperty("foo") === false)) {
-        return true;
-      }
-    }
- }
-runTestCase(testcase);
+});
+assert.sameValue(o.hasOwnProperty("foo"), false, 'o.hasOwnProperty("foo")');
diff --git a/test/built-ins/Object/defineProperty/15.2.3.6-3-4.js b/test/built-ins/Object/defineProperty/15.2.3.6-3-4.js
index 85fb4c81181ee1713e72422cf0f26025958129ec..14d006411b2ebd4f0701a2789098d9e30a7d1b9c 100644
--- a/test/built-ins/Object/defineProperty/15.2.3.6-3-4.js
+++ b/test/built-ins/Object/defineProperty/15.2.3.6-3-4.js
@@ -10,24 +10,14 @@ es5id: 15.2.3.6-3-4
 description: >
     Object.defineProperty throws TypeError if desc has 'set' and
     'writable' present(8.10.5 step 9.a)
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
     var o = {};
     
     // dummy getter
     var setter = function () { }
     var desc = { set: setter, writable: false };
-    
-    try {
+assert.throws(TypeError, function() {
       Object.defineProperty(o, "foo", desc);
-    }
-    catch (e) {
-      if (e instanceof TypeError &&
-          (o.hasOwnProperty("foo") === false)) {
-        return true;
-      }
-    }
- }
-runTestCase(testcase);
+});
+assert.sameValue(o.hasOwnProperty("foo"), false, 'o.hasOwnProperty("foo")');
diff --git a/test/built-ins/Object/defineProperty/15.2.3.6-3-5.js b/test/built-ins/Object/defineProperty/15.2.3.6-3-5.js
index 6d9530c8833246b2b7b1a299197998e6bc6ca86f..af67691860e7f1b66778d37f520c4c0376849cc1 100644
--- a/test/built-ins/Object/defineProperty/15.2.3.6-3-5.js
+++ b/test/built-ins/Object/defineProperty/15.2.3.6-3-5.js
@@ -10,24 +10,14 @@ es5id: 15.2.3.6-3-5
 description: >
     Object.defineProperty throws TypeError if getter is not callable
     but not undefined (Number)(8.10.5 step 7.b)
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
     var o = {};
     
     // dummy getter
     var getter = 42;
     var desc = { get: getter };
-    
-    try {
+assert.throws(TypeError, function() {
       Object.defineProperty(o, "foo", desc);
-    }
-    catch (e) {
-      if (e instanceof TypeError &&
-          (o.hasOwnProperty("foo") === false)) {
-        return true;
-      }
-    }
- }
-runTestCase(testcase);
+});
+assert.sameValue(o.hasOwnProperty("foo"), false, 'o.hasOwnProperty("foo")');
diff --git a/test/built-ins/Object/defineProperty/15.2.3.6-3-6.js b/test/built-ins/Object/defineProperty/15.2.3.6-3-6.js
index 8580c10ff167a24e8f5913b83b13cbe5d9064247..075befa12a81b3ec3a812c2aabab28f950b7693b 100644
--- a/test/built-ins/Object/defineProperty/15.2.3.6-3-6.js
+++ b/test/built-ins/Object/defineProperty/15.2.3.6-3-6.js
@@ -10,24 +10,14 @@ es5id: 15.2.3.6-3-6
 description: >
     Object.defineProperty throws TypeError if getter is not callable
     but not undefined (Boolean)(8.10.5 step 7.b)
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
     var o = {};
     
     // dummy getter
     var getter = true;
     var desc = { get: getter };
-    
-    try {
+assert.throws(TypeError, function() {
       Object.defineProperty(o, "foo", desc);
-    }
-    catch (e) {
-      if (e instanceof TypeError &&
-          (o.hasOwnProperty("foo") === false)) {
-        return true;
-      }
-    }
- }
-runTestCase(testcase);
+});
+assert.sameValue(o.hasOwnProperty("foo"), false, 'o.hasOwnProperty("foo")');
diff --git a/test/built-ins/Object/defineProperty/15.2.3.6-3-7.js b/test/built-ins/Object/defineProperty/15.2.3.6-3-7.js
index e048b74ec172d82a244f49cf6d0b337e178a3677..9625de703cad2919580b8253d7e631feedcf32bb 100644
--- a/test/built-ins/Object/defineProperty/15.2.3.6-3-7.js
+++ b/test/built-ins/Object/defineProperty/15.2.3.6-3-7.js
@@ -10,24 +10,14 @@ es5id: 15.2.3.6-3-7
 description: >
     Object.defineProperty throws TypeError if getter is not callable
     but not undefined (String)(8.10.5 step 7.b)
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
     var o = {};
     
     // dummy getter
     var getter = "abc";
     var desc = { get: getter };
-    
-    try {
+assert.throws(TypeError, function() {
       Object.defineProperty(o, "foo", desc);
-    }
-    catch (e) {
-      if (e instanceof TypeError &&
-          (o.hasOwnProperty("foo") === false)) {
-        return true;
-      }
-    }
- }
-runTestCase(testcase);
+});
+assert.sameValue(o.hasOwnProperty("foo"), false, 'o.hasOwnProperty("foo")');
diff --git a/test/built-ins/Object/defineProperty/15.2.3.6-3-8.js b/test/built-ins/Object/defineProperty/15.2.3.6-3-8.js
index 70e9387f02f2c6e7bf92c523b1339e2239c64477..a719492994ec8ca398c69b2ed08a0b685e817d66 100644
--- a/test/built-ins/Object/defineProperty/15.2.3.6-3-8.js
+++ b/test/built-ins/Object/defineProperty/15.2.3.6-3-8.js
@@ -10,24 +10,14 @@ es5id: 15.2.3.6-3-8
 description: >
     Object.defineProperty throws TypeError if getter is not callable
     but not undefined (Null)(8.10.5 step 7.b)
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
     var o = {};
     
     // dummy getter
     var getter = null;
     var desc = { get: getter };
-    
-    try {
+assert.throws(TypeError, function() {
       Object.defineProperty(o, "foo", desc);
-    }
-    catch (e) {
-      if (e instanceof TypeError &&
-          (o.hasOwnProperty("foo") === false)) {
-        return true;
-      }
-    }
- }
-runTestCase(testcase);
+});
+assert.sameValue(o.hasOwnProperty("foo"), false, 'o.hasOwnProperty("foo")');
diff --git a/test/built-ins/Object/defineProperty/15.2.3.6-3-9.js b/test/built-ins/Object/defineProperty/15.2.3.6-3-9.js
index 2cd8c3e6a5964e1eaafc7a3db6570595eaa45d32..eb1e1b17e0382e5ee9e0103876b0d7090796705a 100644
--- a/test/built-ins/Object/defineProperty/15.2.3.6-3-9.js
+++ b/test/built-ins/Object/defineProperty/15.2.3.6-3-9.js
@@ -10,24 +10,14 @@ es5id: 15.2.3.6-3-9
 description: >
     Object.defineProperty throws TypeError if getter is not callable
     but not undefined (Object)(8.10.5 step 7.b)
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
     var o = {};
     
     // dummy getter
     var getter = { a: 1 };
     var desc = { get: getter };
-    
-    try {
+assert.throws(TypeError, function() {
       Object.defineProperty(o, "foo", desc);
-    }
-    catch (e) {
-      if (e instanceof TypeError &&
-          (o.hasOwnProperty("foo") === false)) {
-        return true;
-      }
-    }
- }
-runTestCase(testcase);
+});
+assert.sameValue(o.hasOwnProperty("foo"), false, 'o.hasOwnProperty("foo")');
diff --git a/test/built-ins/Object/defineProperty/15.2.3.6-4-1.js b/test/built-ins/Object/defineProperty/15.2.3.6-4-1.js
index 92413a320fa4f513fc7afd99e2cb51d5d19a8610..8fcec00fed03fd3753be495a1b24bafa0c764051 100644
--- a/test/built-ins/Object/defineProperty/15.2.3.6-4-1.js
+++ b/test/built-ins/Object/defineProperty/15.2.3.6-4-1.js
@@ -12,22 +12,12 @@ es5id: 15.2.3.6-4-1
 description: >
     Object.defineProperty throws TypeError when adding properties to
     non-extensible objects(8.12.9 step 3)
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
   var o = {};
   Object.preventExtensions(o);
-
-  try {
+assert.throws(TypeError, function() {
     var desc = { value: 1 };
     Object.defineProperty(o, "foo", desc);
-  }
-  catch (e) {
-      if (e instanceof TypeError &&
-          (o.hasOwnProperty("foo") === false)) {
-      return true;
-    }
-  }
- }
-runTestCase(testcase);
+});
+assert.sameValue(o.hasOwnProperty("foo"), false, 'o.hasOwnProperty("foo")');
diff --git a/test/built-ins/Object/defineProperty/15.2.3.6-4-10.js b/test/built-ins/Object/defineProperty/15.2.3.6-4-10.js
index c8c916b5be4053a86557b4c6b9c897c73b3df2ee..096d483e018ceb48a9e2b2b6e754b00a4ac212e4 100644
--- a/test/built-ins/Object/defineProperty/15.2.3.6-4-10.js
+++ b/test/built-ins/Object/defineProperty/15.2.3.6-4-10.js
@@ -12,10 +12,8 @@ description: >
     Object.defineProperty throws TypeError when changing
     [[Enumerable]] from false to true on non-configurable accessor
     properties
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
   var o = {};
 
   // create an accessor property; all other attributes default to false.
@@ -27,20 +25,11 @@ function testcase() {
   // now, setting enumerable to true should fail, since [[Configurable]]
   // on the original property will be false.
   var desc = { get: getter, enumerable: true };
-
-  try {
+assert.throws(TypeError, function() {
     Object.defineProperty(o, "foo", desc);
-  }
-  catch (e) {
-    if (e instanceof TypeError) {
+});
       // the property should remain unchanged.
       var d2 = Object.getOwnPropertyDescriptor(o, "foo");
-      if (d2.get === getter &&
-          d2.enumerable === false &&
-          d2.configurable === false) {
-        return true;
-      }
-    }
-  }
- }
-runTestCase(testcase);
+assert.sameValue(d2.get, getter, 'd2.get');
+assert.sameValue(d2.enumerable, false, 'd2.enumerable');
+assert.sameValue(d2.configurable, false, 'd2.configurable');
diff --git a/test/built-ins/Object/defineProperty/15.2.3.6-4-11.js b/test/built-ins/Object/defineProperty/15.2.3.6-4-11.js
index c2e53cabbfc16dbe0845a0f15154361c25466fec..c2f96ae2b034b41ffa8f159367bd846157efa84f 100644
--- a/test/built-ins/Object/defineProperty/15.2.3.6-4-11.js
+++ b/test/built-ins/Object/defineProperty/15.2.3.6-4-11.js
@@ -12,10 +12,8 @@ description: >
     Object.defineProperty throws TypeError when changing
     [[Enumerable]] from true to false on non-configurable accessor
     properties
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
   var o = {};
 
   // create an accessor property; all other attributes default to false.
@@ -27,20 +25,11 @@ function testcase() {
   // now, setting enumerable to true should fail, since [[Configurable]]
   // on the original property will be false.
   var desc = { get: getter, enumerable: false };
-
-  try {
+assert.throws(TypeError, function() {
     Object.defineProperty(o, "foo", desc);
-  }
-  catch (e) {
-    if (e instanceof TypeError) {
+});
       // the property should remain unchanged.
       var d2 = Object.getOwnPropertyDescriptor(o, "foo");
-      if (d2.get === getter &&
-          d2.enumerable === true &&
-          d2.configurable === false) {
-        return true;
-      }
-    }
-  }
- }
-runTestCase(testcase);
+assert.sameValue(d2.get, getter, 'd2.get');
+assert.sameValue(d2.enumerable, true, 'd2.enumerable');
+assert.sameValue(d2.configurable, false, 'd2.configurable');
diff --git a/test/built-ins/Object/defineProperty/15.2.3.6-4-12.js b/test/built-ins/Object/defineProperty/15.2.3.6-4-12.js
index ccaee1e473bc3cd61804bb649828eec824baf141..a2d049bb3436599845c38866eaf9d44aa615fb0e 100644
--- a/test/built-ins/Object/defineProperty/15.2.3.6-4-12.js
+++ b/test/built-ins/Object/defineProperty/15.2.3.6-4-12.js
@@ -10,10 +10,8 @@ es5id: 15.2.3.6-4-12
 description: >
     Object.defineProperty throws TypeError when changing
     non-configurable data properties to accessor properties
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
   var o = {};
 
   // create a data valued property; all other attributes default to false.
@@ -27,20 +25,12 @@ function testcase() {
   var getter = function () { return 1; }
 
   var desc = { get: getter };
-  try {
+assert.throws(TypeError, function() {
     Object.defineProperty(o, "foo", desc);
-  }
-  catch (e) {
-    if (e instanceof TypeError) {
+});
       // the property should remain a data valued property.
       var d2 = Object.getOwnPropertyDescriptor(o, "foo");
-      if (d2.value === 101 &&
-          d2.writable === false &&
-          d2.enumerable === false &&
-          d2.configurable === false) {
-        return true;
-      }
-    }
-  }
- }
-runTestCase(testcase);
+assert.sameValue(d2.value, 101, 'd2.value');
+assert.sameValue(d2.writable, false, 'd2.writable');
+assert.sameValue(d2.enumerable, false, 'd2.enumerable');
+assert.sameValue(d2.configurable, false, 'd2.configurable');
diff --git a/test/built-ins/Object/defineProperty/15.2.3.6-4-120.js b/test/built-ins/Object/defineProperty/15.2.3.6-4-120.js
index 1c4501485fc9111cd36524f799fd8170e3253908..62f3f419f9fbca5332ee617b011993594abcbb2d 100644
--- a/test/built-ins/Object/defineProperty/15.2.3.6-4-120.js
+++ b/test/built-ins/Object/defineProperty/15.2.3.6-4-120.js
@@ -8,19 +8,11 @@ description: >
     property of 'O', the [[Value]] field of 'desc' is absent, test
     TypeError is thrown when updating the [[Configurable]] attribute
     of the length property from false to true (15.4.5.1 step 3.a.i)
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
-
         var arrObj = [];
-        try {
+assert.throws(TypeError, function() {
             Object.defineProperty(arrObj, "length", {
                 configurable: true
             });
-            return false;
-        } catch (e) {
-            return e instanceof TypeError;
-        }
-    }
-runTestCase(testcase);
+});
diff --git a/test/built-ins/Object/defineProperty/15.2.3.6-4-121.js b/test/built-ins/Object/defineProperty/15.2.3.6-4-121.js
index 6449cbe9d2a6a625498dcefd2de263b852107a80..3122743c37554cb8a2dff15b1f8b7039011d689a 100644
--- a/test/built-ins/Object/defineProperty/15.2.3.6-4-121.js
+++ b/test/built-ins/Object/defineProperty/15.2.3.6-4-121.js
@@ -8,19 +8,11 @@ description: >
     property of 'O', the [[Value]] field of 'desc' is absent, test
     TypeError is thrown when updating the [[Enumerable]] attribute of
     the length property from false to true (15.4.5.1 step 3.a.i)
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
-
         var arrObj = [];
-        try {
+assert.throws(TypeError, function() {
             Object.defineProperty(arrObj, "length", {
                 enumerable: true
             });
-            return false;
-        } catch (e) {
-            return e instanceof TypeError;
-        }
-    }
-runTestCase(testcase);
+});
diff --git a/test/built-ins/Object/defineProperty/15.2.3.6-4-122.js b/test/built-ins/Object/defineProperty/15.2.3.6-4-122.js
index 0a7961a318ea2ac5193b6d9abf91caac3f7112b2..d65953e8799ce0752517f0fe08d9dcda5641c89b 100644
--- a/test/built-ins/Object/defineProperty/15.2.3.6-4-122.js
+++ b/test/built-ins/Object/defineProperty/15.2.3.6-4-122.js
@@ -7,21 +7,13 @@ description: >
     Object.defineProperty - 'O' is an Array, 'name' is the length
     property of 'O', test TypeError is thrown when 'desc' is accessor
     descriptor (15.4.5.1 step 3.a.i)
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
-
         var arrObj = [];
-        try {
+assert.throws(TypeError, function() {
             Object.defineProperty(arrObj, "length", {
                 get: function () {
                     return 2;
                 }
             });
-            return false;
-        } catch (e) {
-            return e instanceof TypeError;
-        }
-    }
-runTestCase(testcase);
+});
diff --git a/test/built-ins/Object/defineProperty/15.2.3.6-4-123.js b/test/built-ins/Object/defineProperty/15.2.3.6-4-123.js
index c4bdd45b4489c208998e75c519086e51930a4ffa..f807ba2524a6f4b265d07eeee5ea98613c517995 100644
--- a/test/built-ins/Object/defineProperty/15.2.3.6-4-123.js
+++ b/test/built-ins/Object/defineProperty/15.2.3.6-4-123.js
@@ -8,23 +8,14 @@ description: >
     property of 'O', the [[Value]] field of 'desc' is absent, test
     TypeError is thrown when updating the [[Writable]] attribute of
     the length property from false to true (15.4.5.1 step 3.a.i)
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
-
         var arrObj = [];
-        try {
+assert.throws(TypeError, function() {
             Object.defineProperty(arrObj, "length", {
                 writable: false
             });
             Object.defineProperty(arrObj, "length", {
                 writable: true
             });
-
-            return false;
-        } catch (e) {
-            return e instanceof TypeError;
-        }
-    }
-runTestCase(testcase);
+});
diff --git a/test/built-ins/Object/defineProperty/15.2.3.6-4-125.js b/test/built-ins/Object/defineProperty/15.2.3.6-4-125.js
index beae885f572cbabf48ace3f4e1f288a46435fc7f..32c822833011a246f7ffcb337d3b67051a4c9f7f 100644
--- a/test/built-ins/Object/defineProperty/15.2.3.6-4-125.js
+++ b/test/built-ins/Object/defineProperty/15.2.3.6-4-125.js
@@ -7,20 +7,11 @@ description: >
     Object.defineProperty - 'O' is an Array, 'name' is the length
     property of 'O', test that RangeError exception is thrown when
     [[Value]] field of 'desc' is undefined (15.4.5.1 step 3.c)
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
-
         var arrObj = [];
-
-        try {
+assert.throws(RangeError, function() {
             Object.defineProperty(arrObj, "length", {
                 value: undefined
             });
-            return false;
-        } catch (e) {
-            return e instanceof RangeError;
-        }
-    }
-runTestCase(testcase);
+});
diff --git a/test/built-ins/Object/defineProperty/15.2.3.6-4-13.js b/test/built-ins/Object/defineProperty/15.2.3.6-4-13.js
index f815a71f59e6be37396b5b9ed6677d8f1d5ac2b8..dba8d0421e5005324a7dbeb24caa9a20c0733a9d 100644
--- a/test/built-ins/Object/defineProperty/15.2.3.6-4-13.js
+++ b/test/built-ins/Object/defineProperty/15.2.3.6-4-13.js
@@ -10,10 +10,8 @@ es5id: 15.2.3.6-4-13
 description: >
     Object.defineProperty throws TypeError when changing
     non-configurable accessor properties to data properties
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
   var o = {};
 
   // create an accessor property; all other attributes default to false.
@@ -26,19 +24,10 @@ function testcase() {
   // changing "foo" to be a data property should fail, since [[Configurable]]
   // on the original property will be false.
   var desc = { value: 101 };
-
-  try {
+assert.throws(TypeError, function() {
     Object.defineProperty(o, "foo", desc);
-  }
-  catch (e) {
-    if (e instanceof TypeError) {
+});
       // the property should remain an accessor property.
       var d2 = Object.getOwnPropertyDescriptor(o, "foo");
-      if (d2.get === getter &&
-          d2.configurable === false) {
-        return true;
-      }
-    }
-  }
- }
-runTestCase(testcase);
+assert.sameValue(d2.get, getter, 'd2.get');
+assert.sameValue(d2.configurable, false, 'd2.configurable');
diff --git a/test/built-ins/Object/defineProperty/15.2.3.6-4-133.js b/test/built-ins/Object/defineProperty/15.2.3.6-4-133.js
index a9d8b98258465102ad2f932a5ad5b3ccb375c5b3..990f4c1905653e7a3846062f6cda4037914bd4aa 100644
--- a/test/built-ins/Object/defineProperty/15.2.3.6-4-133.js
+++ b/test/built-ins/Object/defineProperty/15.2.3.6-4-133.js
@@ -7,20 +7,11 @@ description: >
     Object.defineProperty - 'O' is an Array, 'name' is the length
     property of 'O', test RangeError exception is thrown when the
     [[Value]] field of 'desc' is a negative number (15.4.5.1 step 3.c)
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
-
         var arrObj = [];
-
-        try {
+assert.throws(RangeError, function() {
             Object.defineProperty(arrObj, "length", {
                 value: -9
             });
-            return false;
-        } catch (e) {
-            return e instanceof RangeError;
-        }
-    }
-runTestCase(testcase);
+});
diff --git a/test/built-ins/Object/defineProperty/15.2.3.6-4-134.js b/test/built-ins/Object/defineProperty/15.2.3.6-4-134.js
index ec83b561cb6c8b39ca207d374bee4cd31b2c14ba..6141877b5a11f0a34213a004819039db3e38af87 100644
--- a/test/built-ins/Object/defineProperty/15.2.3.6-4-134.js
+++ b/test/built-ins/Object/defineProperty/15.2.3.6-4-134.js
@@ -7,20 +7,11 @@ description: >
     Object.defineProperty - 'O' is an Array, 'name' is the length
     property of 'O', test RangeError exception is thrown when the
     [[Value]] field of 'desc' is +Infinity (15.4.5.1 step 3.c)
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
-
         var arrObj = [];
-
-        try {
+assert.throws(RangeError, function() {
             Object.defineProperty(arrObj, "length", {
                 value: +Infinity
             });
-            return false;
-        } catch (e) {
-            return e instanceof RangeError;
-        }
-    }
-runTestCase(testcase);
+});
diff --git a/test/built-ins/Object/defineProperty/15.2.3.6-4-135.js b/test/built-ins/Object/defineProperty/15.2.3.6-4-135.js
index 4822a5639588db5ed35aff5cf529800ca7d737cb..fa36e838f26ba8cc77f62cfcfa6b3377cdf2dab8 100644
--- a/test/built-ins/Object/defineProperty/15.2.3.6-4-135.js
+++ b/test/built-ins/Object/defineProperty/15.2.3.6-4-135.js
@@ -7,20 +7,11 @@ description: >
     Object.defineProperty - 'O' is an Array, 'name' is the length
     property of 'O', test RangeError exception is thrown when the
     [[Value]] field of 'desc' is -Infinity (15.4.5.1 step 3.c)
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
-
         var arrObj = [];
-
-        try {
+assert.throws(RangeError, function() {
             Object.defineProperty(arrObj, "length", {
                 value: -Infinity
             });
-            return false;
-        } catch (e) {
-            return e instanceof RangeError;
-        }
-    }
-runTestCase(testcase);
+});
diff --git a/test/built-ins/Object/defineProperty/15.2.3.6-4-136.js b/test/built-ins/Object/defineProperty/15.2.3.6-4-136.js
index 2aac312bb18e5139d5ff3535bff6694dbb4d72c5..a4b4c1b79e53a3de4ef139ab14ae1fa9e1ffe34c 100644
--- a/test/built-ins/Object/defineProperty/15.2.3.6-4-136.js
+++ b/test/built-ins/Object/defineProperty/15.2.3.6-4-136.js
@@ -7,20 +7,11 @@ description: >
     Object.defineProperty - 'O' is an Array, 'name' is the length
     property of 'O', test RangeError exception is thrown when the
     [[Value]] field of 'desc' is NaN (15.4.5.1 step 3.c)
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
-
         var arrObj = [];
-
-        try {
+assert.throws(RangeError, function() {
             Object.defineProperty(arrObj, "length", {
                 value: NaN
             });
-            return false;
-        } catch (e) {
-            return e instanceof RangeError;
-        }
-    }
-runTestCase(testcase);
+});
diff --git a/test/built-ins/Object/defineProperty/15.2.3.6-4-138.js b/test/built-ins/Object/defineProperty/15.2.3.6-4-138.js
index 0cc3097626768ee8a0de7bc09e56237f9cc5d51d..b1f9b8fc6b7dd4b583ef19f7efc2d1b215afbf87 100644
--- a/test/built-ins/Object/defineProperty/15.2.3.6-4-138.js
+++ b/test/built-ins/Object/defineProperty/15.2.3.6-4-138.js
@@ -8,21 +8,11 @@ description: >
     property of 'O', test RangeError exception is thrown when the
     [[Value]] field of 'desc' is a string containing a negative number
     (15.4.5.1 step 3.c)
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
-
         var arrObj = [];
-
-        try {
+assert.throws(RangeError, function() {
             Object.defineProperty(arrObj, "length", {
                 value: "-42"
             });
-            return false;
-        } catch (e) {
-            return e instanceof RangeError;
-        }
-
-    }
-runTestCase(testcase);
+});
diff --git a/test/built-ins/Object/defineProperty/15.2.3.6-4-139.js b/test/built-ins/Object/defineProperty/15.2.3.6-4-139.js
index f1d0616bb9fa47778c850820da2fb867260e8032..13a4b9380b433213c9ebc3f24549dee2a8feac05 100644
--- a/test/built-ins/Object/defineProperty/15.2.3.6-4-139.js
+++ b/test/built-ins/Object/defineProperty/15.2.3.6-4-139.js
@@ -8,21 +8,11 @@ description: >
     property of 'O', test RangeError exception is thrown when the
     [[Value]] field of 'desc' is a string containing a decimal number
     (15.4.5.1 step 3.c)
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
-
         var arrObj = [];
-
-        try {
+assert.throws(RangeError, function() {
             Object.defineProperty(arrObj, "length", {
                 value: "200.59"
             });
-            return false;
-        } catch (e) {
-            return e instanceof RangeError;
-        }
-
-    }
-runTestCase(testcase);
+});
diff --git a/test/built-ins/Object/defineProperty/15.2.3.6-4-140.js b/test/built-ins/Object/defineProperty/15.2.3.6-4-140.js
index d34bb0a5e4502f2e1f42d55f3bbe1801cdd038cf..65d068b74e0a600aed63175728bb65df21fb2a24 100644
--- a/test/built-ins/Object/defineProperty/15.2.3.6-4-140.js
+++ b/test/built-ins/Object/defineProperty/15.2.3.6-4-140.js
@@ -8,21 +8,11 @@ description: >
     property of 'O', test RangeError exception is thrown when the
     [[Value]] field of 'desc' is a string containing +Infinity
     (15.4.5.1 step 3.c)
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
-
         var arrObj = [];
-
-        try {
+assert.throws(RangeError, function() {
             Object.defineProperty(arrObj, "length", {
                 value: "+Infinity"
             });
-            return false;
-        } catch (e) {
-            return e instanceof RangeError;
-        }
-
-    }
-runTestCase(testcase);
+});
diff --git a/test/built-ins/Object/defineProperty/15.2.3.6-4-141.js b/test/built-ins/Object/defineProperty/15.2.3.6-4-141.js
index b6627d57d68050c427a7cb3c929e7bb110b707f4..a39d1564a69d012c7d7348eb82740ef8d7314f52 100644
--- a/test/built-ins/Object/defineProperty/15.2.3.6-4-141.js
+++ b/test/built-ins/Object/defineProperty/15.2.3.6-4-141.js
@@ -8,20 +8,11 @@ description: >
     property of 'O', test RangeError exception is thrown when the
     [[Value]] field of 'desc' is a string containing -Infinity
     (15.4.5.1 step 3.c)
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
-
         var arrObj = [];
-
-        try {
+assert.throws(RangeError, function() {
             Object.defineProperty(arrObj, "length", {
                 value: "-Infinity"
             });
-            return false;
-        } catch (e) {
-            return e instanceof RangeError;
-        }
-    }
-runTestCase(testcase);
+});
diff --git a/test/built-ins/Object/defineProperty/15.2.3.6-4-145.js b/test/built-ins/Object/defineProperty/15.2.3.6-4-145.js
index d8aabcd36fa876412c73302a17d5082664ee589c..8909f1994b2fc1e35fecb62811ac8161bf948277 100644
--- a/test/built-ins/Object/defineProperty/15.2.3.6-4-145.js
+++ b/test/built-ins/Object/defineProperty/15.2.3.6-4-145.js
@@ -8,20 +8,11 @@ description: >
     property of 'O', test RangeError exception is thrown when the
     [[Value]] field of 'desc' is a string which doesn't convert to a
     number (15.4.5.1 step 3.c)
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
-
         var arrObj = [];
-
-        try {
+assert.throws(RangeError, function() {
             Object.defineProperty(arrObj, "length", {
                 value: "two"
             });
-            return false;
-        } catch (e) {
-            return e instanceof RangeError;
-        }
-    }
-runTestCase(testcase);
+});
diff --git a/test/built-ins/Object/defineProperty/15.2.3.6-4-150.js b/test/built-ins/Object/defineProperty/15.2.3.6-4-150.js
index 38ee2aad7627840b961346e7da81247958ce56d7..caafe22910394380349a3c1e6468b5fb4a71521e 100644
--- a/test/built-ins/Object/defineProperty/15.2.3.6-4-150.js
+++ b/test/built-ins/Object/defineProperty/15.2.3.6-4-150.js
@@ -8,16 +8,12 @@ description: >
     property of 'O', test TypeError is thrown when the [[Value]] field
     of 'desc' is an Object that both toString and valueOf wouldn't
     return primitive value (15.4.5.1 step 3.c)
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
-
         var arrObj = [];
         var toStringAccessed = false;
         var valueOfAccessed = false;
-
-        try {
+assert.throws(TypeError, function() {
             Object.defineProperty(arrObj, "length", {
                 value: {
                     toString: function () {
@@ -31,10 +27,6 @@ function testcase() {
                     }
                 }
             });
-            return false;
-
-        } catch (e) {
-            return e instanceof TypeError && toStringAccessed && valueOfAccessed;
-        }
-    }
-runTestCase(testcase);
+});
+assert(toStringAccessed, 'toStringAccessed !== true');
+assert(valueOfAccessed, 'valueOfAccessed !== true');
diff --git a/test/built-ins/Object/defineProperty/15.2.3.6-4-152.js b/test/built-ins/Object/defineProperty/15.2.3.6-4-152.js
index b06f8237bf23e915cf99ebf8b013c483a6694567..e3975ad9efb8c0d5a402daab8d64996649a05abe 100644
--- a/test/built-ins/Object/defineProperty/15.2.3.6-4-152.js
+++ b/test/built-ins/Object/defineProperty/15.2.3.6-4-152.js
@@ -8,21 +8,11 @@ description: >
     property of 'O',  test RangeError is thrown when the [[Value]]
     field of 'desc' is a positive non-integer values (15.4.5.1 step
     3.c)
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
-
         var arrObj = [];
-
-        try {
+assert.throws(RangeError, function() {
             Object.defineProperty(arrObj, "length", {
                 value: 123.5
             });
-
-            return false;
-        } catch (e) {
-            return e instanceof RangeError;
-        }
-    }
-runTestCase(testcase);
+});
diff --git a/test/built-ins/Object/defineProperty/15.2.3.6-4-153.js b/test/built-ins/Object/defineProperty/15.2.3.6-4-153.js
index fd3320eab55b95a31819d68171d1e1a8306cb000..dc60afadfc009b6bd11c6cd0b4f2f32fa1832198 100644
--- a/test/built-ins/Object/defineProperty/15.2.3.6-4-153.js
+++ b/test/built-ins/Object/defineProperty/15.2.3.6-4-153.js
@@ -8,22 +8,11 @@ description: >
     property of 'O',  test RangeError is thrown when the [[Value]]
     field of 'desc' is a negative non-integer values (15.4.5.1 step
     3.c)
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
-
         var arrObj = [];
-
-        try {
+assert.throws(RangeError, function() {
             Object.defineProperty(arrObj, "length", {
                 value: -4294967294.5
             });
-
-            return false;
-        } catch (e) {
-            return e instanceof RangeError;
-        }
-
-    }
-runTestCase(testcase);
+});
diff --git a/test/built-ins/Object/defineProperty/15.2.3.6-4-156.js b/test/built-ins/Object/defineProperty/15.2.3.6-4-156.js
index 2975917f605d4128fe2c17c5f0a4da61f4da6d8f..010a2237c7d7ec04a5e6380d093544ffb3504187 100644
--- a/test/built-ins/Object/defineProperty/15.2.3.6-4-156.js
+++ b/test/built-ins/Object/defineProperty/15.2.3.6-4-156.js
@@ -7,21 +7,11 @@ description: >
     Object.defineProperty - 'O' is an Array, 'name' is the length
     property of 'O', test RangeError is thrown when the [[Value]]
     field of 'desc' is boundary value 2^32 (15.4.5.1 step 3.c)
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
-
         var arrObj = [];
-
-        try {
+assert.throws(RangeError, function() {
             Object.defineProperty(arrObj, "length", {
                 value: 4294967296
             });
-            return false;
-        } catch (e) {
-            return e instanceof RangeError;
-        }
-
-    }
-runTestCase(testcase);
+});
diff --git a/test/built-ins/Object/defineProperty/15.2.3.6-4-157.js b/test/built-ins/Object/defineProperty/15.2.3.6-4-157.js
index 10a0fa812259295f6de1d3a2be7911fe57027d1e..24b4e08ee36f440fecaf14c41508a6a1fcb931ff 100644
--- a/test/built-ins/Object/defineProperty/15.2.3.6-4-157.js
+++ b/test/built-ins/Object/defineProperty/15.2.3.6-4-157.js
@@ -7,21 +7,11 @@ description: >
     Object.defineProperty - 'O' is an Array, 'name' is the length
     property of 'O', test RangeError is thrown when the [[Value]]
     field of 'desc' is boundary value 2^32 + 1 (15.4.5.1 step 3.c)
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
-
         var arrObj = [];
-
-        try {
+assert.throws(RangeError, function() {
             Object.defineProperty(arrObj, "length", {
                 value: 4294967297
             });
-            return false;
-        } catch (e) {
-            return e instanceof RangeError;
-        }
-
-    }
-runTestCase(testcase);
+});
diff --git a/test/built-ins/Object/defineProperty/15.2.3.6-4-16.js b/test/built-ins/Object/defineProperty/15.2.3.6-4-16.js
index 740c359d3e025090ffd98309bd4ceced93b1e737..ac5f5233037743a40790e79c76b1eee599b497e2 100644
--- a/test/built-ins/Object/defineProperty/15.2.3.6-4-16.js
+++ b/test/built-ins/Object/defineProperty/15.2.3.6-4-16.js
@@ -10,10 +10,8 @@ es5id: 15.2.3.6-4-16
 description: >
     Object.defineProperty throws TypeError when relaxing [[Writable]]
     on non-configurable data properties
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
   var o = {};
 
   // create a data valued property; all other attributes default to false.
@@ -23,21 +21,12 @@ function testcase() {
   // now, relaxing [[Writable]] on "foo" should fail, since both
   // [[Configurable]] and [[Writable]] on the original property will be false.
   var desc = { value: 101, writable: true };
-
-  try {
+assert.throws(TypeError, function() {
     Object.defineProperty(o, "foo", desc);
-  }
-  catch (e) {
-    if (e instanceof TypeError) {
+});
       // the property should remain unchanged.
       var d2 = Object.getOwnPropertyDescriptor(o, "foo");
-      if (d2.value === 101 &&
-          d2.writable === false &&
-          d2.enumerable === false &&
-          d2.configurable === false) {
-        return true;
-      }
-    }
-  }
- }
-runTestCase(testcase);
+assert.sameValue(d2.value, 101, 'd2.value');
+assert.sameValue(d2.writable, false, 'd2.writable');
+assert.sameValue(d2.enumerable, false, 'd2.enumerable');
+assert.sameValue(d2.configurable, false, 'd2.configurable');
diff --git a/test/built-ins/Object/defineProperty/15.2.3.6-4-162.js b/test/built-ins/Object/defineProperty/15.2.3.6-4-162.js
index d0e9c25b97344670f24e7034282dff9247a58741..dd21806a7a83ea5622709ee8fdf5a5ccc916aa2b 100644
--- a/test/built-ins/Object/defineProperty/15.2.3.6-4-162.js
+++ b/test/built-ins/Object/defineProperty/15.2.3.6-4-162.js
@@ -8,24 +8,15 @@ description: >
     property of 'O', the [[Value]] field of 'desc' is greater than
     value of the length property, test TypeError is thrown when the
     length property is not writable (15.4.5.1 step 3.f.i)
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
-
         var arrObj = [];
 
         Object.defineProperty(arrObj, "length", {
             writable: false
         });
-
-        try {
+assert.throws(TypeError, function() {
             Object.defineProperty(arrObj, "length", {
                 value: 12
             });
-            return false;
-        } catch (e) {
-            return e instanceof TypeError;
-        }
-    }
-runTestCase(testcase);
+});
diff --git a/test/built-ins/Object/defineProperty/15.2.3.6-4-164.js b/test/built-ins/Object/defineProperty/15.2.3.6-4-164.js
index 89837ebee04e2cad5568a090d89f66f9e1f475a4..c8a0513c78437c9a86e5665e17513a1ffc301c66 100644
--- a/test/built-ins/Object/defineProperty/15.2.3.6-4-164.js
+++ b/test/built-ins/Object/defineProperty/15.2.3.6-4-164.js
@@ -9,24 +9,15 @@ description: >
     of  the length property, test TypeError is thrown when the
     [[Writable]] attribute of the length property is false (15.4.5.1
     step 3.g)
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
-
         var arrObj = [0, 1];
 
         Object.defineProperty(arrObj, "length", {
             writable: false
         });
-
-        try {
+assert.throws(TypeError, function() {
             Object.defineProperty(arrObj, "length", {
                 value: 0
             });
-            return false;
-        } catch (e) {
-            return e instanceof TypeError;
-        }
-    }
-runTestCase(testcase);
+});
diff --git a/test/built-ins/Object/defineProperty/15.2.3.6-4-168.js b/test/built-ins/Object/defineProperty/15.2.3.6-4-168.js
index 584c171fc00d89a312bcc8d0b44b2a9fe87c0aff..1cb70eb370b9f759aead8f2ea7a012721f26f005 100644
--- a/test/built-ins/Object/defineProperty/15.2.3.6-4-168.js
+++ b/test/built-ins/Object/defineProperty/15.2.3.6-4-168.js
@@ -12,14 +12,10 @@ description: >
     value greater than the non-deletable index by 1, writable
     attribute of length is set to false and TypeError exception is
     thrown (15.4.5.1 step 3.i.iii)
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
-
         var arrObj = [0, 1, 2];
-
-        try {
+assert.throws(TypeError, function() {
             Object.defineProperty(arrObj, "1", {
                 configurable: false
             });
@@ -28,9 +24,5 @@ function testcase() {
                 value: 0,
                 writable: false
             });
-            return false;
-        } catch (e) {
-            return e instanceof TypeError && arrObj.length === 2;
-        }
-    }
-runTestCase(testcase);
+});
+assert.sameValue(arrObj.length, 2, 'arrObj.length');
diff --git a/test/built-ins/Object/defineProperty/15.2.3.6-4-169.js b/test/built-ins/Object/defineProperty/15.2.3.6-4-169.js
index 2244260fa4db4457368c29611c826d83e1890c15..15aff619002cc3748d82368530708404907bb1a7 100644
--- a/test/built-ins/Object/defineProperty/15.2.3.6-4-169.js
+++ b/test/built-ins/Object/defineProperty/15.2.3.6-4-169.js
@@ -10,11 +10,8 @@ description: >
     which is set to configurable: false, test that new length is set
     to a value greater than the non-deletable index by 1, and
     TypeError is thrown (15.4.5.1 step 3.l.i)
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
-
         var arrObj = [0, 1, 2];
 
         Object.defineProperty(arrObj, "1", {
@@ -24,14 +21,10 @@ function testcase() {
         Object.defineProperty(arrObj, "2", {
             configurable: true
         });
-
-        try {
+assert.throws(TypeError, function() {
             Object.defineProperty(arrObj, "length", {
                 value: 1
             });
-            return false;
-        } catch (e) {
-            return e instanceof TypeError && arrObj.length === 2 && !arrObj.hasOwnProperty("2");
-        }
-    }
-runTestCase(testcase);
+});
+assert.sameValue(arrObj.length, 2, 'arrObj.length');
+assert.sameValue(arrObj.hasOwnProperty("2"), false, 'arrObj.hasOwnProperty("2")');
diff --git a/test/built-ins/Object/defineProperty/15.2.3.6-4-17.js b/test/built-ins/Object/defineProperty/15.2.3.6-4-17.js
index 4303b1ac5aae72fb019f2d3f02414f2c9f59ae06..9a945d76c56d0bd7e35d4058798ba77a5a1e0083 100644
--- a/test/built-ins/Object/defineProperty/15.2.3.6-4-17.js
+++ b/test/built-ins/Object/defineProperty/15.2.3.6-4-17.js
@@ -10,10 +10,8 @@ es5id: 15.2.3.6-4-17
 description: >
     Object.defineProperty throws TypeError when changing value of
     non-writable non-configurable data properties
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
   var o = {};
 
   // create a data valued property; all other attributes default to false.
@@ -23,22 +21,13 @@ function testcase() {
   // now, trying to change the value of "foo" should fail, since both
   // [[Configurable]] and [[Writable]] on the original property will be false.
   var desc = { value: 102 };
-
-  try {
+assert.throws(TypeError, function() {
     Object.defineProperty(o, "foo", desc);
-  }
-  catch (e) {
-    if (e instanceof TypeError) {
+});
       // the property should remain unchanged.
       var d2 = Object.getOwnPropertyDescriptor(o, "foo");
 
-      if (d2.value === 101 &&
-          d2.writable === false &&
-          d2.enumerable === false &&
-          d2.configurable === false) {
-        return true;
-      }
-    }
-  }
- }
-runTestCase(testcase);
+assert.sameValue(d2.value, 101, 'd2.value');
+assert.sameValue(d2.writable, false, 'd2.writable');
+assert.sameValue(d2.enumerable, false, 'd2.enumerable');
+assert.sameValue(d2.configurable, false, 'd2.configurable');
diff --git a/test/built-ins/Object/defineProperty/15.2.3.6-4-170.js b/test/built-ins/Object/defineProperty/15.2.3.6-4-170.js
index 276000567731213b43ee4e324a7889d4803460b0..4650c357eb89793aee4095b5ec2b1351c19e32d5 100644
--- a/test/built-ins/Object/defineProperty/15.2.3.6-4-170.js
+++ b/test/built-ins/Object/defineProperty/15.2.3.6-4-170.js
@@ -11,14 +11,10 @@ description: >
     to a value greater than the non-deletable index by 1, writable
     attribute of length is set to false and TypeError exception is
     thrown (15.4.5.1 step 3.l.ii)
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
-
         var arrObj = [0, 1];
-
-        try {
+assert.throws(TypeError, function() {
             Object.defineProperty(arrObj, "1", {
                 configurable: false
             });
@@ -26,10 +22,6 @@ function testcase() {
             Object.defineProperty(arrObj, "length", {
                 value: 1
             });
-
-            return false;
-        } catch (e) {
-            return e instanceof TypeError && arrObj.length === 2 && arrObj.hasOwnProperty("1");
-        }
-    }
-runTestCase(testcase);
+});
+assert.sameValue(arrObj.length, 2, 'arrObj.length');
+assert(arrObj.hasOwnProperty("1"), 'arrObj.hasOwnProperty("1") !== true');
diff --git a/test/built-ins/Object/defineProperty/15.2.3.6-4-174.js b/test/built-ins/Object/defineProperty/15.2.3.6-4-174.js
index 4563a5da4fc642cc5d172a8d52750b0a06a001d9..422632e805f9c5ac201e6e4385a34ee57b27827b 100644
--- a/test/built-ins/Object/defineProperty/15.2.3.6-4-174.js
+++ b/test/built-ins/Object/defineProperty/15.2.3.6-4-174.js
@@ -9,14 +9,10 @@ description: >
     of  the length property, test the [[Configurable]] attribute of
     own accessor property with large index named in 'O' can stop
     deleting index named properties (15.4.5.1 step 3.l.ii)
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
-
         var arrObj = [0, 1];
-
-        try {
+assert.throws(TypeError, function() {
             Object.defineProperty(arrObj, "1", {
                 get: function () {
                     return 1;
@@ -27,10 +23,6 @@ function testcase() {
             Object.defineProperty(arrObj, "length", {
                 value: 1
             });
-
-            return false;
-        } catch (e) {
-            return e instanceof TypeError && arrObj.length === 2 && arrObj.hasOwnProperty("1");
-        }
-    }
-runTestCase(testcase);
+});
+assert.sameValue(arrObj.length, 2, 'arrObj.length');
+assert(arrObj.hasOwnProperty("1"), 'arrObj.hasOwnProperty("1") !== true');
diff --git a/test/built-ins/Object/defineProperty/15.2.3.6-4-18.js b/test/built-ins/Object/defineProperty/15.2.3.6-4-18.js
index f9f358abfd6baf176824563c565de4ff64d31b8a..ff511f401919c1f3c7c8ded288eeb559fe7ce73f 100644
--- a/test/built-ins/Object/defineProperty/15.2.3.6-4-18.js
+++ b/test/built-ins/Object/defineProperty/15.2.3.6-4-18.js
@@ -10,10 +10,8 @@ es5id: 15.2.3.6-4-18
 description: >
     Object.defineProperty throws TypeError when changing setter of
     non-configurable accessor properties(8.12.9 step 11.a.i)
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
   var o = {};
 
   // create an accessor property; all other attributes default to false.
@@ -26,20 +24,11 @@ function testcase() {
   // on the original property will be false.
   var setter = function (x) {};
   var desc = { set: setter };
-
-  try {
+assert.throws(TypeError, function() {
     Object.defineProperty(o, "foo", desc);
-  }
-  catch (e) {
-    if (e instanceof TypeError) {
+});
       // the property should remain unchanged.
       var d2 = Object.getOwnPropertyDescriptor(o, "foo");
-      if (d2.get === getter &&
-	      d2.configurable === false &&
-          d2.enumerable === false) {
-        return true;
-      }
-    }
-  }
- }
-runTestCase(testcase);
+assert.sameValue(d2.get, getter, 'd2.get');
+assert.sameValue(d2.configurable, false, 'd2.configurable');
+assert.sameValue(d2.enumerable, false, 'd2.enumerable');
diff --git a/test/built-ins/Object/defineProperty/15.2.3.6-4-188.js b/test/built-ins/Object/defineProperty/15.2.3.6-4-188.js
index 83b2820194763c3bbbe6a889fc3617474f0ede2c..53b68caf95c108bd9cd5c40a51b15855f31f464d 100644
--- a/test/built-ins/Object/defineProperty/15.2.3.6-4-188.js
+++ b/test/built-ins/Object/defineProperty/15.2.3.6-4-188.js
@@ -8,24 +8,15 @@ description: >
     named property, test TypeError is thrown if the [[Writable]]
     attribute of the length property in 'O' is false and value of
     'name' equals to value of the length property (15.4.5.1 step 4.b)
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
         var arrObj = [1, 2, 3];
 
         Object.defineProperty(arrObj, "length", {
             writable: false
         });
-
-        try {
+assert.throws(TypeError, function() {
             Object.defineProperty(arrObj, 3, {
                 value: "abc"
             });
-
-            return false;
-        } catch (e) {
-            return e instanceof TypeError;
-        }
-    }
-runTestCase(testcase);
+});
diff --git a/test/built-ins/Object/defineProperty/15.2.3.6-4-189.js b/test/built-ins/Object/defineProperty/15.2.3.6-4-189.js
index 2308e831f8e4171b9ce49a115adcb3393858de6f..f67443f47580e1dda6edabf1ce9e9c2a655e6773 100644
--- a/test/built-ins/Object/defineProperty/15.2.3.6-4-189.js
+++ b/test/built-ins/Object/defineProperty/15.2.3.6-4-189.js
@@ -9,24 +9,15 @@ description: >
     attribute of the length property in 'O' is false and value of
     'name' is greater than value of the length property (15.4.5.1 step
     4.b)
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
         var arrObj = [1, 2, 3];
 
         Object.defineProperty(arrObj, "length", {
             writable: false
         });
-
-        try {
+assert.throws(TypeError, function() {
             Object.defineProperty(arrObj, 4, {
                 value: "abc"
             });
-
-            return false;
-        } catch (e) {
-            return e instanceof TypeError;
-        }
-    }
-runTestCase(testcase);
+});
diff --git a/test/built-ins/Object/defineProperty/15.2.3.6-4-198.js b/test/built-ins/Object/defineProperty/15.2.3.6-4-198.js
index d10e7f75efafc7c9c1c6c3e9335f099a8cf63d2f..27354b58dd56d579d49ff8f5dda1ba066d5742de 100644
--- a/test/built-ins/Object/defineProperty/15.2.3.6-4-198.js
+++ b/test/built-ins/Object/defineProperty/15.2.3.6-4-198.js
@@ -7,19 +7,12 @@ description: >
     Object.defineProperty - 'O' is an Array, 'name' is an array index
     named property, 'name' property doesn't exist in 'O', test
     TypeError is thrown when 'O' is not extensible (15.4.5.1 step 4.c)
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
         var arrObj = [];
         Object.preventExtensions(arrObj);
-
-        try {
+assert.throws(TypeError, function() {
             var desc = { value: 1 };
             Object.defineProperty(arrObj, "0", desc);
-            return false;
-        } catch (e) {
-            return e instanceof TypeError && (arrObj.hasOwnProperty("0") === false);
-        }
-    }
-runTestCase(testcase);
+});
+assert.sameValue(arrObj.hasOwnProperty("0"), false, 'arrObj.hasOwnProperty("0")');
diff --git a/test/built-ins/Object/defineProperty/15.2.3.6-4-20.js b/test/built-ins/Object/defineProperty/15.2.3.6-4-20.js
index 490183f734683e141978cfd4b161d600f447c192..a40764a323a29aa82c189308406ae1ea4f526cff 100644
--- a/test/built-ins/Object/defineProperty/15.2.3.6-4-20.js
+++ b/test/built-ins/Object/defineProperty/15.2.3.6-4-20.js
@@ -11,10 +11,8 @@ description: >
     Object.defineProperty throws TypeError when changing getter (if
     present) of non-configurable accessor properties(8.12.9 step
     11.a.ii)
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
   var o = {};
 
   // create an accessor property; all other attributes default to false.
@@ -26,20 +24,11 @@ function testcase() {
   // now, trying to change the setter should fail, since [[Configurable]]
   // on the original property will be false.
   var desc = { get: undefined };
-
-  try {
+assert.throws(TypeError, function() {
     Object.defineProperty(o, "foo", desc);
-  }
-  catch (e) {
-    if (e instanceof TypeError) {
+});
       var d2 = Object.getOwnPropertyDescriptor(o, "foo");
 
-      if (d2.get === getter &&
-	      d2.configurable === false &&
-          d2.enumerable === false) {
-        return true;
-      }
-    }
-  }
- }
-runTestCase(testcase);
+assert.sameValue(d2.get, getter, 'd2.get');
+assert.sameValue(d2.configurable, false, 'd2.configurable');
+assert.sameValue(d2.enumerable, false, 'd2.enumerable');
diff --git a/test/built-ins/Object/defineProperty/15.2.3.6-4-22.js b/test/built-ins/Object/defineProperty/15.2.3.6-4-22.js
index 7a536dfc91a6521294e17d41dc3ae707c706235c..6643da65d90a8255f3556f7351e00584157c011f 100644
--- a/test/built-ins/Object/defineProperty/15.2.3.6-4-22.js
+++ b/test/built-ins/Object/defineProperty/15.2.3.6-4-22.js
@@ -6,24 +6,17 @@ es5id: 15.2.3.6-4-22
 description: >
     Object.defineProperty - 'name' is existing own data property
     (8.12.9 step 1)
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
         var obj = {};
         Object.defineProperty(obj, "foo", {
             value: 11,
             configurable: false
         });
-
-        try {
+assert.throws(TypeError, function() {
             Object.defineProperty(obj, "foo", {
                 value: 12,
                 configurable: true
             });
-            return false;
-        } catch (e) {
-            return e instanceof TypeError && obj.foo === 11;
-        }
-    }
-runTestCase(testcase);
+});
+assert.sameValue(obj.foo, 11, 'obj.foo');
diff --git a/test/built-ins/Object/defineProperty/15.2.3.6-4-24.js b/test/built-ins/Object/defineProperty/15.2.3.6-4-24.js
index 7ffd5748e0b135fb5f58ed6842d01c40c4e81288..a1e7f654f980948317040c01ccacb9d3b83a523a 100644
--- a/test/built-ins/Object/defineProperty/15.2.3.6-4-24.js
+++ b/test/built-ins/Object/defineProperty/15.2.3.6-4-24.js
@@ -6,10 +6,8 @@ es5id: 15.2.3.6-4-24
 description: >
     Object.defineProperty - 'name' is own data property that overrides
     an inherited data property (8.12.9 step 1)
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
         var proto = {};
         Object.defineProperty(proto, "foo", {
             value: 12,
@@ -23,14 +21,9 @@ function testcase() {
             value: 11,
             configurable: false
         });
-
-        try {
+assert.throws(TypeError, function() {
             Object.defineProperty(obj, "foo", {
                 configurable: true
             });
-            return false;
-        } catch (e) {
-            return e instanceof TypeError && obj.foo === 11;
-        }
-    }
-runTestCase(testcase);
+});
+assert.sameValue(obj.foo, 11, 'obj.foo');
diff --git a/test/built-ins/Object/defineProperty/15.2.3.6-4-25.js b/test/built-ins/Object/defineProperty/15.2.3.6-4-25.js
index ef42415f1544653263f38ce70db6facfb9748f01..0dafb044a033c96feea7d37a65eb42748505ccf1 100644
--- a/test/built-ins/Object/defineProperty/15.2.3.6-4-25.js
+++ b/test/built-ins/Object/defineProperty/15.2.3.6-4-25.js
@@ -6,10 +6,8 @@ es5id: 15.2.3.6-4-25
 description: >
     Object.defineProperty - 'data' is own data property that overrides
     an inherited accessor property (8.12.9 step 1)
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
         var proto = {};
         Object.defineProperty(proto, "foo", {
             get: function () { },
@@ -23,14 +21,9 @@ function testcase() {
             value: 11,
             configurable: false
         });
-
-        try {
+assert.throws(TypeError, function() {
             Object.defineProperty(obj, "foo", {
                 configurable: true
             });
-            return false;
-        } catch (e) {
-            return e instanceof TypeError && obj.foo === 11;
-        }
-    }
-runTestCase(testcase);
+});
+assert.sameValue(obj.foo, 11, 'obj.foo');
diff --git a/test/built-ins/Object/defineProperty/15.2.3.6-4-26.js b/test/built-ins/Object/defineProperty/15.2.3.6-4-26.js
index ec2e4c818a2c4b80f66fbf40a609aa74bf2e1d50..5a6c52ba576b108aee22aff8b8b6c0a6a03391d0 100644
--- a/test/built-ins/Object/defineProperty/15.2.3.6-4-26.js
+++ b/test/built-ins/Object/defineProperty/15.2.3.6-4-26.js
@@ -6,10 +6,8 @@ es5id: 15.2.3.6-4-26
 description: >
     Object.defineProperty - 'name' is own accessor property (8.12.9
     step 1)
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
         var obj = {};
 
         Object.defineProperty(obj, "property", {
@@ -18,17 +16,12 @@ function testcase() {
             },
             configurable: false
         });
-
-        try {
+assert.throws(TypeError, function() {
             Object.defineProperty(obj, "property", {
                 get: function () {
                     return 12;
                 },
                 configurable: true
             });
-            return false;
-        } catch (e) {
-            return e instanceof TypeError && obj.property === 11;
-        }
-    }
-runTestCase(testcase);
+});
+assert.sameValue(obj.property, 11, 'obj.property');
diff --git a/test/built-ins/Object/defineProperty/15.2.3.6-4-28.js b/test/built-ins/Object/defineProperty/15.2.3.6-4-28.js
index c3b6b50192e128180cc206c0de66538913dac17e..e2918e4bb0e4a5d79ae0f1af7e2866e08f36bccd 100644
--- a/test/built-ins/Object/defineProperty/15.2.3.6-4-28.js
+++ b/test/built-ins/Object/defineProperty/15.2.3.6-4-28.js
@@ -6,10 +6,8 @@ es5id: 15.2.3.6-4-28
 description: >
     Object.defineProperty - 'name' is own accessor property that
     overrides an inherited data property (8.12.9 step 1)
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
         var proto = {};
         Object.defineProperty(proto, "foo", {
             value: 11,
@@ -23,14 +21,8 @@ function testcase() {
             get: function () { },
             configurable: false
         });
-
-        try {
+assert.throws(TypeError, function() {
             Object.defineProperty(obj, "foo", {
                 configurable: true
             });
-            return false;
-        } catch (e) {
-            return e instanceof TypeError;
-        }
-    }
-runTestCase(testcase);
+});
diff --git a/test/built-ins/Object/defineProperty/15.2.3.6-4-29.js b/test/built-ins/Object/defineProperty/15.2.3.6-4-29.js
index 0c11ec0bdc889e55aab02347fd9b5f9f8b791791..249380afc906ca887172aa5a22f2e14d78302b5f 100644
--- a/test/built-ins/Object/defineProperty/15.2.3.6-4-29.js
+++ b/test/built-ins/Object/defineProperty/15.2.3.6-4-29.js
@@ -6,10 +6,8 @@ es5id: 15.2.3.6-4-29
 description: >
     Object.defineProperty - 'name' is own accessor property that
     overrides an inherited accessor property (8.12.9 step 1)
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
         var proto = {};
         Object.defineProperty(proto, "foo", {
             get: function () { },
@@ -23,14 +21,8 @@ function testcase() {
             get: function () { },
             configurable: false
         });
-
-        try {
+assert.throws(TypeError, function() {
             Object.defineProperty(obj, "foo", {
                 configurable: true
             });
-            return false;
-        } catch (e) {
-            return e instanceof TypeError;
-        }
-    }
-runTestCase(testcase);
+});
diff --git a/test/built-ins/Object/defineProperty/15.2.3.6-4-30.js b/test/built-ins/Object/defineProperty/15.2.3.6-4-30.js
index a30d3988412312e9ba7da98d3100ca48797177bc..3c42e298dd6964803b688b0ccbef43d7b412f760 100644
--- a/test/built-ins/Object/defineProperty/15.2.3.6-4-30.js
+++ b/test/built-ins/Object/defineProperty/15.2.3.6-4-30.js
@@ -6,23 +6,15 @@ es5id: 15.2.3.6-4-30
 description: >
     Object.defineProperty - 'name' is own accessor property without a
     get function (8.12.9 step 1)
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
         var obj = {};
         Object.defineProperty(obj, "foo", {
             set: function () { },
             configurable: false
         });
-
-        try {
+assert.throws(TypeError, function() {
             Object.defineProperty(obj, "foo", {
                 configurable: true
             });
-            return false;
-        } catch (e) {
-            return e instanceof TypeError;
-        }
-    }
-runTestCase(testcase);
+});
diff --git a/test/built-ins/Object/defineProperty/15.2.3.6-4-31.js b/test/built-ins/Object/defineProperty/15.2.3.6-4-31.js
index c3cff89f916dd2d2ed2d9ab5e10182cd6fc4294b..3a2098e1e0a6dc9e1a5e8e83ed64a0067269db74 100644
--- a/test/built-ins/Object/defineProperty/15.2.3.6-4-31.js
+++ b/test/built-ins/Object/defineProperty/15.2.3.6-4-31.js
@@ -7,10 +7,8 @@ description: >
     Object.defineProperty - 'name' is own accessor property without a
     get function that overrides an inherited accessor property(8.12.9
     step 1)
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
         var proto = {};
         Object.defineProperty(proto, "foo", {
             get: function () { },
@@ -24,14 +22,8 @@ function testcase() {
             set: function () { },
             configurable: false
         });
-
-        try {
+assert.throws(TypeError, function() {
             Object.defineProperty(obj, "foo", {
                 configurable: true
             });
-            return false;
-        } catch (e) {
-            return e instanceof TypeError;
-        }
-    }
-runTestCase(testcase);
+});
diff --git a/test/built-ins/Object/defineProperty/15.2.3.6-4-33.js b/test/built-ins/Object/defineProperty/15.2.3.6-4-33.js
index 1e0a8118620707b3b6f8494fd85459665f181211..0f95d6cf57a5724683916f12e7565b8872afdcde 100644
--- a/test/built-ins/Object/defineProperty/15.2.3.6-4-33.js
+++ b/test/built-ins/Object/defineProperty/15.2.3.6-4-33.js
@@ -7,25 +7,18 @@ description: >
     Object.defineProperty - 'O' is a Function object that uses
     Object's [[GetOwnProperty]] method to access the 'name' property
     (8.12.9 step 1)
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
         var fun = function () { };
 
         Object.defineProperty(fun, "foo", {
             value: 12,
             configurable: false
         });
-
-        try {
+assert.throws(TypeError, function() {
             Object.defineProperty(fun, "foo", {
                 value: 11,
                 configurable: true
             });
-            return false;
-        } catch (e) {
-            return e instanceof TypeError && fun.foo === 12;
-        }
-    }
-runTestCase(testcase);
+});
+assert.sameValue(fun.foo, 12, 'fun.foo');
diff --git a/test/built-ins/Object/defineProperty/15.2.3.6-4-337.js b/test/built-ins/Object/defineProperty/15.2.3.6-4-337.js
index c91bd20ac9faae8cc45b76734d60a94d92d57206..a09c71134b9cbdb380c7b98dd86fc08d036d0120 100644
--- a/test/built-ins/Object/defineProperty/15.2.3.6-4-337.js
+++ b/test/built-ins/Object/defineProperty/15.2.3.6-4-337.js
@@ -7,10 +7,8 @@ description: >
     ES5 Attributes - fail to update [[Enumerable]] attribute of data
     property ([[Writable]] is true, [[Enumerable]] is true,
     [[Configurable]] is false) to different value
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
         var obj = {};
 
         Object.defineProperty(obj, "prop", {
@@ -22,15 +20,13 @@ function testcase() {
 
         var propertyDefineCorrect = obj.hasOwnProperty("prop");
         var desc1 = Object.getOwnPropertyDescriptor(obj, "prop");
-
-        try {
+assert.throws(TypeError, function() {
             Object.defineProperty(obj, "prop", {
                 enumerable: false
             });
-            return false;
-        } catch (e) {
+});
             var desc2 = Object.getOwnPropertyDescriptor(obj, "prop");
-            return propertyDefineCorrect && desc1.enumerable === true && obj.prop === 2010 && desc2.enumerable === true && e instanceof TypeError;
-        }
-    }
-runTestCase(testcase);
+assert(propertyDefineCorrect, 'propertyDefineCorrect !== true');
+assert.sameValue(desc1.enumerable, true, 'desc1.enumerable');
+assert.sameValue(obj.prop, 2010, 'obj.prop');
+assert.sameValue(desc2.enumerable, true, 'desc2.enumerable');
diff --git a/test/built-ins/Object/defineProperty/15.2.3.6-4-338.js b/test/built-ins/Object/defineProperty/15.2.3.6-4-338.js
index 38f563aa0f812e17a84261fb9ff6e8f18e592f49..45425687a7511a919120a577de37f2cc47590d8e 100644
--- a/test/built-ins/Object/defineProperty/15.2.3.6-4-338.js
+++ b/test/built-ins/Object/defineProperty/15.2.3.6-4-338.js
@@ -7,10 +7,8 @@ description: >
     ES5 Attributes - fail to update [[Configurable]] attribute of data
     property ([[Writable]] is true, [[Enumerable]] is true,
     [[Configurable]] is false) to different value
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
         var obj = {};
 
         Object.defineProperty(obj, "prop", {
@@ -21,15 +19,13 @@ function testcase() {
         });
         var propertyDefineCorrect = obj.hasOwnProperty("prop");
         var desc1 = Object.getOwnPropertyDescriptor(obj, "prop");
-
-        try {
+assert.throws(TypeError, function() {
             Object.defineProperty(obj, "prop", {
                 configurable: true
             });
-            return false;
-        } catch (e) {
+});
             var desc2 = Object.getOwnPropertyDescriptor(obj, "prop");
-            return propertyDefineCorrect && desc1.configurable === false && obj.prop === 2010 && desc2.configurable === false && e instanceof TypeError;
-        }
-    }
-runTestCase(testcase);
+assert(propertyDefineCorrect, 'propertyDefineCorrect !== true');
+assert.sameValue(desc1.configurable, false, 'desc1.configurable');
+assert.sameValue(obj.prop, 2010, 'obj.prop');
+assert.sameValue(desc2.configurable, false, 'desc2.configurable');
diff --git a/test/built-ins/Object/defineProperty/15.2.3.6-4-339-1.js b/test/built-ins/Object/defineProperty/15.2.3.6-4-339-1.js
index 01b6f0230b47f7c5cc4c8f764d7020aa36ce2e8d..f4523b9af9e3a861694d9d6f97eb2c602e135770 100644
--- a/test/built-ins/Object/defineProperty/15.2.3.6-4-339-1.js
+++ b/test/built-ins/Object/defineProperty/15.2.3.6-4-339-1.js
@@ -8,10 +8,8 @@ description: >
     attributes [[Writable]]: true, [[Enumerable]]: true,
     [[Configurable]]: false to an accessor property does not succeed,
     'A' is an Array object (8.12.9 - step 9.a)
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
         var obj = [];
 
         Object.defineProperty(obj, "0", {
@@ -26,14 +24,13 @@ function testcase() {
         function getFunc() {
             return 20;
         }
-        try {
+assert.throws(TypeError, function() {
             Object.defineProperty(obj, "0", {
                 get: getFunc
             });
-            return false;
-        } catch (e) {
+});
             var desc2 = Object.getOwnPropertyDescriptor(obj, "0");
-            return propertyDefineCorrect && desc1.value === 2010 && obj[0] === 2010 && typeof desc2.get === "undefined" && e instanceof TypeError;
-        }
-    }
-runTestCase(testcase);
+assert(propertyDefineCorrect, 'propertyDefineCorrect !== true');
+assert.sameValue(desc1.value, 2010, 'desc1.value');
+assert.sameValue(obj[0], 2010, 'obj[0]');
+assert.sameValue(typeof desc2.get, "undefined", 'typeof desc2.get');
diff --git a/test/built-ins/Object/defineProperty/15.2.3.6-4-339-2.js b/test/built-ins/Object/defineProperty/15.2.3.6-4-339-2.js
index 428e988e3b49e784fd5fdcde55003ecfa11e2f40..d2efb019b8246477586326b8d39c684c8cec2f3c 100644
--- a/test/built-ins/Object/defineProperty/15.2.3.6-4-339-2.js
+++ b/test/built-ins/Object/defineProperty/15.2.3.6-4-339-2.js
@@ -8,10 +8,8 @@ description: >
     attributes [[Writable]]: true, [[Enumerable]]: true,
     [[Configurable]]: false to an accessor property does not succeed,
     'O' is an Arguments object (8.12.9 - step 9.a)
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
         var obj = (function () {
             return arguments;
         }());
@@ -28,14 +26,13 @@ function testcase() {
         function getFunc() {
             return 20;
         }
-        try {
+assert.throws(TypeError, function() {
             Object.defineProperty(obj, "prop", {
                 get: getFunc
             });
-            return false;
-        } catch (e) {
+});
             var desc2 = Object.getOwnPropertyDescriptor(obj, "prop");
-            return propertyDefineCorrect && desc1.value === 2010 && obj.prop === 2010 && typeof desc2.get === "undefined" && e instanceof TypeError;
-        }
-    }
-runTestCase(testcase);
+assert(propertyDefineCorrect, 'propertyDefineCorrect !== true');
+assert.sameValue(desc1.value, 2010, 'desc1.value');
+assert.sameValue(obj.prop, 2010, 'obj.prop');
+assert.sameValue(typeof desc2.get, "undefined", 'typeof desc2.get');
diff --git a/test/built-ins/Object/defineProperty/15.2.3.6-4-339-3.js b/test/built-ins/Object/defineProperty/15.2.3.6-4-339-3.js
index eea47783f2dce7f012ed2f665dc2546a00261b19..dedf8ce8f5b5d6356620442f7d4660da1b199f97 100644
--- a/test/built-ins/Object/defineProperty/15.2.3.6-4-339-3.js
+++ b/test/built-ins/Object/defineProperty/15.2.3.6-4-339-3.js
@@ -8,10 +8,8 @@ description: >
     attributes [[Writable]]: true, [[Enumerable]]: true,
     [[Configurable]]: false to an accessor property does not succeed,
     'A' is an Array object (8.12.9 - step 9.a)
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
         var obj = [];
 
         Object.defineProperty(obj, "prop", {
@@ -26,15 +24,13 @@ function testcase() {
         function getFunc() {
             return 20;
         }
-        try {
+assert.throws(TypeError, function() {
             Object.defineProperty(obj, "prop", {
                 get: getFunc
             });
-            return false;
-        } catch (e) {
+});
             var desc2 = Object.getOwnPropertyDescriptor(obj, "prop");
-            return propertyDefineCorrect && desc1.value === 2010 && obj.prop === 2010 &&
-                typeof desc2.get === "undefined" && e instanceof TypeError;
-        }
-    }
-runTestCase(testcase);
+assert(propertyDefineCorrect, 'propertyDefineCorrect !== true');
+assert.sameValue(desc1.value, 2010, 'desc1.value');
+assert.sameValue(obj.prop, 2010, 'obj.prop');
+assert.sameValue(typeof desc2.get, "undefined", 'typeof desc2.get');
diff --git a/test/built-ins/Object/defineProperty/15.2.3.6-4-339-4.js b/test/built-ins/Object/defineProperty/15.2.3.6-4-339-4.js
index 92a20998bde05111b66cb2994b78fb32b578d7b8..35d2aa61491f3eb03090df423e28411e860cc1a6 100644
--- a/test/built-ins/Object/defineProperty/15.2.3.6-4-339-4.js
+++ b/test/built-ins/Object/defineProperty/15.2.3.6-4-339-4.js
@@ -8,10 +8,8 @@ description: >
     attributes [[Writable]]: true, [[Enumerable]]: true,
     [[Configurable]]: false to an accessor property does not succeed,
     'O' is an Arguments object (8.12.9 - step 9.a)
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
         var obj = (function () {
             return arguments;
         }());
@@ -28,15 +26,13 @@ function testcase() {
         function getFunc() {
             return 20;
         }
-        try {
+assert.throws(TypeError, function() {
             Object.defineProperty(obj, "0", {
                 get: getFunc
             });
-            return false;
-        } catch (e) {
+});
             var desc2 = Object.getOwnPropertyDescriptor(obj, "0");
-            return propertyDefineCorrect && desc1.value === 2010 && obj[0] === 2010 &&
-                typeof desc2.get === "undefined" && e instanceof TypeError;
-        }
-    }
-runTestCase(testcase);
+assert(propertyDefineCorrect, 'propertyDefineCorrect !== true');
+assert.sameValue(desc1.value, 2010, 'desc1.value');
+assert.sameValue(obj[0], 2010, 'obj[0]');
+assert.sameValue(typeof desc2.get, "undefined", 'typeof desc2.get');
diff --git a/test/built-ins/Object/defineProperty/15.2.3.6-4-339.js b/test/built-ins/Object/defineProperty/15.2.3.6-4-339.js
index ec5daa537a9bfb2ef96f02effe4815bed2098bac..1cce212b23b379e50399a5ed577a4c52b9e9532d 100644
--- a/test/built-ins/Object/defineProperty/15.2.3.6-4-339.js
+++ b/test/built-ins/Object/defineProperty/15.2.3.6-4-339.js
@@ -7,10 +7,8 @@ description: >
     ES5 Attributes - fail to update the data property ([[Writable]] is
     true, [[Enumerable]] is true, [[Configurable]] is false) to an
     accessor property
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
         var obj = {};
 
         Object.defineProperty(obj, "prop", {
@@ -25,14 +23,13 @@ function testcase() {
         function getFunc() {
             return 20;
         }
-        try {
+assert.throws(TypeError, function() {
             Object.defineProperty(obj, "prop", {
                 get: getFunc
             });
-            return false;
-        } catch (e) {
+});
             var desc2 = Object.getOwnPropertyDescriptor(obj, "prop");
-            return propertyDefineCorrect && desc1.value === 2010 && obj.prop === 2010 && typeof desc2.get === "undefined" && e instanceof TypeError;
-        }
-    }
-runTestCase(testcase);
+assert(propertyDefineCorrect, 'propertyDefineCorrect !== true');
+assert.sameValue(desc1.value, 2010, 'desc1.value');
+assert.sameValue(obj.prop, 2010, 'obj.prop');
+assert.sameValue(typeof desc2.get, "undefined", 'typeof desc2.get');
diff --git a/test/built-ins/Object/defineProperty/15.2.3.6-4-34.js b/test/built-ins/Object/defineProperty/15.2.3.6-4-34.js
index dfa637d260fe713d260ae71764436e964a33a74e..323bd5e01b91cea8c2d54967e8ab5574cb30518d 100644
--- a/test/built-ins/Object/defineProperty/15.2.3.6-4-34.js
+++ b/test/built-ins/Object/defineProperty/15.2.3.6-4-34.js
@@ -7,25 +7,18 @@ description: >
     Object.defineProperty - 'O' is an Array object that uses Object's
     [[GetOwnProperty]] method to access the 'name' property (8.12.9
     step 1)
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
         var arrObj = [];
 
         Object.defineProperty(arrObj, "foo", {
             value: 12,
             configurable: false
         });
-
-        try {
+assert.throws(TypeError, function() {
             Object.defineProperty(arrObj, "foo", {
                 value: 11,
                 configurable: true
             });
-            return false;
-        } catch (e) {
-            return e instanceof TypeError && arrObj.foo === 12;
-        }
-    }
-runTestCase(testcase);
+});
+assert.sameValue(arrObj.foo, 12, 'arrObj.foo');
diff --git a/test/built-ins/Object/defineProperty/15.2.3.6-4-35.js b/test/built-ins/Object/defineProperty/15.2.3.6-4-35.js
index e19b585b678c845bed6c5ea57b28a7585eee8b41..b6f3fb3b3568ce6ec4f74d69c82c60951d223411 100644
--- a/test/built-ins/Object/defineProperty/15.2.3.6-4-35.js
+++ b/test/built-ins/Object/defineProperty/15.2.3.6-4-35.js
@@ -7,25 +7,18 @@ description: >
     Object.defineProperty - 'O' is a String object which implements
     its own [[GetOwnProperty]] method to access the 'name' property
     (8.12.9 step 1)
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
         var str = new String("abc");
 
         Object.defineProperty(str, "foo", {
             value: 12,
             configurable: false
         });
-
-        try {
+assert.throws(TypeError, function() {
             Object.defineProperty(str, "foo", {
                 value: 11,
                 configurable: true
             });
-            return false;
-        } catch (e) {
-            return e instanceof TypeError && str.foo === 12;
-        }
-    }
-runTestCase(testcase);
+});
+assert.sameValue(str.foo, 12, 'str.foo');
diff --git a/test/built-ins/Object/defineProperty/15.2.3.6-4-351.js b/test/built-ins/Object/defineProperty/15.2.3.6-4-351.js
index 72da60ce6000f87d482347f475bf728bf6b1196e..4007343fa01f67b52cbf4dde7ecc8ca8c5372731 100644
--- a/test/built-ins/Object/defineProperty/15.2.3.6-4-351.js
+++ b/test/built-ins/Object/defineProperty/15.2.3.6-4-351.js
@@ -7,10 +7,8 @@ description: >
     ES5 Attributes - fail to update [[Enumerable]] attribute of data
     property ([[Writable]] is true, [[Enumerable]] is false,
     [[Configurable]] is false) to different value
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
         var obj = {};
 
         Object.defineProperty(obj, "prop", {
@@ -22,15 +20,13 @@ function testcase() {
 
         var propertyDefineCorrect = obj.hasOwnProperty("prop");
         var desc1 = Object.getOwnPropertyDescriptor(obj, "prop");
-
-        try {
+assert.throws(TypeError, function() {
             Object.defineProperty(obj, "prop", {
                 enumerable: true
             });
-            return false;
-        } catch (e) {
+});
             var desc2 = Object.getOwnPropertyDescriptor(obj, "prop");
-            return propertyDefineCorrect && desc1.enumerable === false && obj.prop === 2010 && desc2.enumerable === false && e instanceof TypeError;
-        }
-    }
-runTestCase(testcase);
+assert(propertyDefineCorrect, 'propertyDefineCorrect !== true');
+assert.sameValue(desc1.enumerable, false, 'desc1.enumerable');
+assert.sameValue(obj.prop, 2010, 'obj.prop');
+assert.sameValue(desc2.enumerable, false, 'desc2.enumerable');
diff --git a/test/built-ins/Object/defineProperty/15.2.3.6-4-352.js b/test/built-ins/Object/defineProperty/15.2.3.6-4-352.js
index fd24809f32878ff6b9c4f3c709ce3af304184af5..e06bcef7a81f74cbf56833a07718569fcca3f6dc 100644
--- a/test/built-ins/Object/defineProperty/15.2.3.6-4-352.js
+++ b/test/built-ins/Object/defineProperty/15.2.3.6-4-352.js
@@ -7,10 +7,8 @@ description: >
     ES5 Attributes - fail to update [[Configurable]] attribute of data
     property ([[Writable]] is true, [[Enumerable]] is false,
     [[Configurable]] is false) to different value
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
         var obj = {};
 
         Object.defineProperty(obj, "prop", {
@@ -22,15 +20,13 @@ function testcase() {
 
         var propertyDefineCorrect = obj.hasOwnProperty("prop");
         var desc1 = Object.getOwnPropertyDescriptor(obj, "prop");
-
-        try {
+assert.throws(TypeError, function() {
             Object.defineProperty(obj, "prop", {
                 configurable: true
             });
-            return false;
-        } catch (e) {
+});
             var desc2 = Object.getOwnPropertyDescriptor(obj, "prop");
-            return propertyDefineCorrect && desc1.configurable === false && obj.prop === 2010 && desc2.configurable === false && e instanceof TypeError;
-        }
-    }
-runTestCase(testcase);
+assert(propertyDefineCorrect, 'propertyDefineCorrect !== true');
+assert.sameValue(desc1.configurable, false, 'desc1.configurable');
+assert.sameValue(obj.prop, 2010, 'obj.prop');
+assert.sameValue(desc2.configurable, false, 'desc2.configurable');
diff --git a/test/built-ins/Object/defineProperty/15.2.3.6-4-353.js b/test/built-ins/Object/defineProperty/15.2.3.6-4-353.js
index 98c28a86c6530606ef4ba211c03159ed7e3b5dea..7f90efce203323b2a6d81f8cee4cd6788cd10130 100644
--- a/test/built-ins/Object/defineProperty/15.2.3.6-4-353.js
+++ b/test/built-ins/Object/defineProperty/15.2.3.6-4-353.js
@@ -7,10 +7,8 @@ description: >
     ES5 Attributes - fail to update the data property ([[Writable]] is
     true, [[Enumerable]] is false, [[Configurable]] is false) to an
     accessor property
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
         var obj = {};
 
         Object.defineProperty(obj, "prop", {
@@ -25,14 +23,13 @@ function testcase() {
         function getFunc() {
             return 20;
         }
-        try {
+assert.throws(TypeError, function() {
             Object.defineProperty(obj, "prop", {
                 get: getFunc
             });
-            return false;
-        } catch (e) {
+});
             var desc2 = Object.getOwnPropertyDescriptor(obj, "prop");
-            return propertyDefineCorrect && desc1.value === 2010 && obj.prop === 2010 && typeof desc2.get === "undefined" && e instanceof TypeError;
-        }
-    }
-runTestCase(testcase);
+assert(propertyDefineCorrect, 'propertyDefineCorrect !== true');
+assert.sameValue(desc1.value, 2010, 'desc1.value');
+assert.sameValue(obj.prop, 2010, 'obj.prop');
+assert.sameValue(typeof desc2.get, "undefined", 'typeof desc2.get');
diff --git a/test/built-ins/Object/defineProperty/15.2.3.6-4-36.js b/test/built-ins/Object/defineProperty/15.2.3.6-4-36.js
index 2efdb845370416499a0d90058f7a0f3d5774aa20..207e87585cc07c4c338e405c4f8424f0e863d8ee 100644
--- a/test/built-ins/Object/defineProperty/15.2.3.6-4-36.js
+++ b/test/built-ins/Object/defineProperty/15.2.3.6-4-36.js
@@ -7,25 +7,18 @@ description: >
     Object.defineProperty - 'O' is a Boolean object that uses Object's
     [[GetOwnProperty]] method to access the 'name' property (8.12.9
     step 1)
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
         var obj = new Boolean(true);
 
         Object.defineProperty(obj, "foo", {
             value: 12,
             configurable: false
         });
-
-        try {
+assert.throws(TypeError, function() {
             Object.defineProperty(obj, "foo", {
                 value: 11,
                 configurable: true
             });
-            return false;
-        } catch (e) {
-            return e instanceof TypeError && obj.foo === 12;
-        }
-    }
-runTestCase(testcase);
+});
+assert.sameValue(obj.foo, 12, 'obj.foo');
diff --git a/test/built-ins/Object/defineProperty/15.2.3.6-4-364.js b/test/built-ins/Object/defineProperty/15.2.3.6-4-364.js
index dd02213bd48040e2bce5fcc2022c41d87c756652..2bca77ac775b6b856237087da67ab21222f123fa 100644
--- a/test/built-ins/Object/defineProperty/15.2.3.6-4-364.js
+++ b/test/built-ins/Object/defineProperty/15.2.3.6-4-364.js
@@ -7,10 +7,8 @@ description: >
     ES5 Attributes - fail to update [[Writable]] attribute of data
     property ([[Writable]] is false, [[Enumerable]] is true,
     [[Configurable]] is false) to different value
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
         var obj = {};
 
         Object.defineProperty(obj, "prop", {
@@ -21,16 +19,14 @@ function testcase() {
         });
         var propertyDefineCorrect = obj.hasOwnProperty("prop");
         var desc1 = Object.getOwnPropertyDescriptor(obj, "prop");
-        try {
+assert.throws(TypeError, function() {
             Object.defineProperty(obj, "prop", {
                 writable: true
             });
-
-            return false;
-        } catch (e) {
+});
             var desc2 = Object.getOwnPropertyDescriptor(obj, "prop");
 
-            return propertyDefineCorrect && desc1.writable === false && obj.prop === 2010 && desc2.writable === false && e instanceof TypeError;
-        }
-    }
-runTestCase(testcase);
+assert(propertyDefineCorrect, 'propertyDefineCorrect !== true');
+assert.sameValue(desc1.writable, false, 'desc1.writable');
+assert.sameValue(obj.prop, 2010, 'obj.prop');
+assert.sameValue(desc2.writable, false, 'desc2.writable');
diff --git a/test/built-ins/Object/defineProperty/15.2.3.6-4-365.js b/test/built-ins/Object/defineProperty/15.2.3.6-4-365.js
index ccb73b470ffff8a8aad67e785e727a452117d1c8..e64f411e992625e7752f89595598eca14a6b1386 100644
--- a/test/built-ins/Object/defineProperty/15.2.3.6-4-365.js
+++ b/test/built-ins/Object/defineProperty/15.2.3.6-4-365.js
@@ -7,10 +7,8 @@ description: >
     ES5 Attributes - fail to update [[Enumerable]] attribute of data
     property ([[Writable]] is false, [[Enumerable]] is true,
     [[Configurable]] is false) to different value
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
         var obj = {};
 
         Object.defineProperty(obj, "prop", {
@@ -21,16 +19,14 @@ function testcase() {
         });
         var propertyDefineCorrect = obj.hasOwnProperty("prop");
         var desc1 = Object.getOwnPropertyDescriptor(obj, "prop");
-        try {
+assert.throws(TypeError, function() {
             Object.defineProperty(obj, "prop", {
                 enumerable: false
             });
-
-            return false;
-        } catch (e) {
+});
             var desc2 = Object.getOwnPropertyDescriptor(obj, "prop");
 
-            return propertyDefineCorrect && desc1.enumerable === true && obj.prop === 2010 && desc2.enumerable === true && e instanceof TypeError;
-        }
-    }
-runTestCase(testcase);
+assert(propertyDefineCorrect, 'propertyDefineCorrect !== true');
+assert.sameValue(desc1.enumerable, true, 'desc1.enumerable');
+assert.sameValue(obj.prop, 2010, 'obj.prop');
+assert.sameValue(desc2.enumerable, true, 'desc2.enumerable');
diff --git a/test/built-ins/Object/defineProperty/15.2.3.6-4-366.js b/test/built-ins/Object/defineProperty/15.2.3.6-4-366.js
index 4d81111716ba720b7ee089620c987b08260bb659..1b83099163824a54569107b8711d0de78674b948 100644
--- a/test/built-ins/Object/defineProperty/15.2.3.6-4-366.js
+++ b/test/built-ins/Object/defineProperty/15.2.3.6-4-366.js
@@ -7,10 +7,8 @@ description: >
     ES5 Attributes - fail to update [[Configurable]] attribute of data
     property ([[Writable]] is false, [[Enumerable]] is true,
     [[Configurable]] is false) to different value
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
         var obj = {};
 
         Object.defineProperty(obj, "prop", {
@@ -21,16 +19,14 @@ function testcase() {
         });
         var propertyDefineCorrect = obj.hasOwnProperty("prop");
         var desc1 = Object.getOwnPropertyDescriptor(obj, "prop");
-        try {
+assert.throws(TypeError, function() {
             Object.defineProperty(obj, "prop", {
                 configurable: true
             });
-
-            return false;
-        } catch (e) {
+});
             var desc2 = Object.getOwnPropertyDescriptor(obj, "prop");
 
-            return propertyDefineCorrect && desc1.configurable === false && obj.prop === 2010 && desc2.configurable === false && e instanceof TypeError;
-        }
-    }
-runTestCase(testcase);
+assert(propertyDefineCorrect, 'propertyDefineCorrect !== true');
+assert.sameValue(desc1.configurable, false, 'desc1.configurable');
+assert.sameValue(obj.prop, 2010, 'obj.prop');
+assert.sameValue(desc2.configurable, false, 'desc2.configurable');
diff --git a/test/built-ins/Object/defineProperty/15.2.3.6-4-367.js b/test/built-ins/Object/defineProperty/15.2.3.6-4-367.js
index e7152981d37cd0b3b59add82cc07ab47e3e54412..2626b69fa34dcf7a52e93f2292aa29429482de7e 100644
--- a/test/built-ins/Object/defineProperty/15.2.3.6-4-367.js
+++ b/test/built-ins/Object/defineProperty/15.2.3.6-4-367.js
@@ -7,10 +7,8 @@ description: >
     ES5 Attributes - fail to update the data property ([[Writable]] is
     false, [[Enumerable]] is true, [[Configurable]] is false) to an
     accessor property
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
         var obj = {};
 
         Object.defineProperty(obj, "prop", {
@@ -25,14 +23,13 @@ function testcase() {
         function getFunc() {
             return 20;
         }
-        try {
+assert.throws(TypeError, function() {
             Object.defineProperty(obj, "prop", {
                 get: getFunc
             });
-            return false;
-        } catch (e) {
+});
             var desc2 = Object.getOwnPropertyDescriptor(obj, "prop");
-            return propertyDefineCorrect && desc1.value === 2010 && obj.prop === 2010 && typeof desc2.get === "undefined" && e instanceof TypeError;
-        }
-    }
-runTestCase(testcase);
+assert(propertyDefineCorrect, 'propertyDefineCorrect !== true');
+assert.sameValue(desc1.value, 2010, 'desc1.value');
+assert.sameValue(obj.prop, 2010, 'obj.prop');
+assert.sameValue(typeof desc2.get, "undefined", 'typeof desc2.get');
diff --git a/test/built-ins/Object/defineProperty/15.2.3.6-4-37.js b/test/built-ins/Object/defineProperty/15.2.3.6-4-37.js
index 09d3cf9169a22efb7716b13ec0fe632a68875c99..c27cbbc780f8f67a3204e9cc3db35c53a1c5b1cd 100644
--- a/test/built-ins/Object/defineProperty/15.2.3.6-4-37.js
+++ b/test/built-ins/Object/defineProperty/15.2.3.6-4-37.js
@@ -7,25 +7,18 @@ description: >
     Object.defineProperty - 'O' is a Number object that uses Object's
     [[GetOwnProperty]] method to access the 'name' property (8.12.9
     step 1)
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
         var obj = new Number(-2);
 
         Object.defineProperty(obj, "foo", {
             value: 12,
             configurable: false
         });
-
-        try {
+assert.throws(TypeError, function() {
             Object.defineProperty(obj, "foo", {
                 value: 11,
                 configurable: true
             });
-            return false;
-        } catch (e) {
-            return e instanceof TypeError && obj.foo === 12;
-        }
-    }
-runTestCase(testcase);
+});
+assert.sameValue(obj.foo, 12, 'obj.foo');
diff --git a/test/built-ins/Object/defineProperty/15.2.3.6-4-378.js b/test/built-ins/Object/defineProperty/15.2.3.6-4-378.js
index a439572238f74ba7fb686b2cc6f0c245aa801ecf..ca9b1ab784d52e52f2b4f6212b3f70363d6ae90a 100644
--- a/test/built-ins/Object/defineProperty/15.2.3.6-4-378.js
+++ b/test/built-ins/Object/defineProperty/15.2.3.6-4-378.js
@@ -7,10 +7,8 @@ description: >
     ES5 Attributes - fail to update [[Writable]] attribute of data
     property ([[Writable]] is false, [[Enumerable]] is false,
     [[Configurable]] is false) to different value
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
         var obj = {};
 
         Object.defineProperty(obj, "prop", {
@@ -21,17 +19,14 @@ function testcase() {
         });
         var propertyDefineCorrect = obj.hasOwnProperty("prop");
         var desc1 = Object.getOwnPropertyDescriptor(obj, "prop");
-
-        try {
+assert.throws(TypeError, function() {
             Object.defineProperty(obj, "prop", {
                 writable: true
             });
-
-            return false;
-        } catch (e) {
+});
             var desc2 = Object.getOwnPropertyDescriptor(obj, "prop");
 
-            return propertyDefineCorrect && desc1.writable === false && obj.prop === 2010 && desc2.writable === false && e instanceof TypeError;
-        }
-    }
-runTestCase(testcase);
+assert(propertyDefineCorrect, 'propertyDefineCorrect !== true');
+assert.sameValue(desc1.writable, false, 'desc1.writable');
+assert.sameValue(obj.prop, 2010, 'obj.prop');
+assert.sameValue(desc2.writable, false, 'desc2.writable');
diff --git a/test/built-ins/Object/defineProperty/15.2.3.6-4-379.js b/test/built-ins/Object/defineProperty/15.2.3.6-4-379.js
index ba16519f42dea02b4e76f7d8dbdb8da598ff3984..8d52b1bb0e9ac75683a1588d736e7514e7ce6817 100644
--- a/test/built-ins/Object/defineProperty/15.2.3.6-4-379.js
+++ b/test/built-ins/Object/defineProperty/15.2.3.6-4-379.js
@@ -7,10 +7,8 @@ description: >
     ES5 Attributes - fail to update [[Enumerable]] attribute of data
     property ([[Writable]] is false, [[Enumerable]] is false,
     [[Configurable]] is false) to different value
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
         var obj = {};
 
         Object.defineProperty(obj, "prop", {
@@ -21,16 +19,14 @@ function testcase() {
         });
         var propertyDefineCorrect = obj.hasOwnProperty("prop");
         var desc1 = Object.getOwnPropertyDescriptor(obj, "prop");
-        try {
+assert.throws(TypeError, function() {
             Object.defineProperty(obj, "prop", {
                 enumerable: true
             });
-
-            return false;
-        } catch (e) {
+});
             var desc2 = Object.getOwnPropertyDescriptor(obj, "prop");
 
-            return propertyDefineCorrect && desc1.enumerable === false && obj.prop === 2010 && desc2.enumerable === false && e instanceof TypeError;
-        }
-    }
-runTestCase(testcase);
+assert(propertyDefineCorrect, 'propertyDefineCorrect !== true');
+assert.sameValue(desc1.enumerable, false, 'desc1.enumerable');
+assert.sameValue(obj.prop, 2010, 'obj.prop');
+assert.sameValue(desc2.enumerable, false, 'desc2.enumerable');
diff --git a/test/built-ins/Object/defineProperty/15.2.3.6-4-380.js b/test/built-ins/Object/defineProperty/15.2.3.6-4-380.js
index b47b2906a6d959394c76f56afb0b66f0f692f791..8797d6d55497f3e7ca94ecd89ae0633a790af213 100644
--- a/test/built-ins/Object/defineProperty/15.2.3.6-4-380.js
+++ b/test/built-ins/Object/defineProperty/15.2.3.6-4-380.js
@@ -7,10 +7,8 @@ description: >
     ES5 Attributes - fail to update [[Configurable]] attribute of data
     property ([[Writable]] is false, [[Enumerable]] is false,
     [[Configurable]] is false) to different value
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
         var obj = {};
 
         Object.defineProperty(obj, "prop", {
@@ -21,17 +19,14 @@ function testcase() {
         });
         var propertyDefineCorrect = obj.hasOwnProperty("prop");
         var desc1 = Object.getOwnPropertyDescriptor(obj, "prop");
-
-        try {
+assert.throws(TypeError, function() {
             Object.defineProperty(obj, "prop", {
                 configurable: true
             });
-
-            return false;
-        } catch (e) {
+});
             var desc2 = Object.getOwnPropertyDescriptor(obj, "prop");
 
-            return propertyDefineCorrect && desc1.configurable === false && obj.prop === 2010 && desc2.configurable === false && e instanceof TypeError;
-        }
-    }
-runTestCase(testcase);
+assert(propertyDefineCorrect, 'propertyDefineCorrect !== true');
+assert.sameValue(desc1.configurable, false, 'desc1.configurable');
+assert.sameValue(obj.prop, 2010, 'obj.prop');
+assert.sameValue(desc2.configurable, false, 'desc2.configurable');
diff --git a/test/built-ins/Object/defineProperty/15.2.3.6-4-381.js b/test/built-ins/Object/defineProperty/15.2.3.6-4-381.js
index 3ed7d37a4b75310c761e05bf9be62d56807279cf..93a371d4159f76005e212df191769f5770e26af6 100644
--- a/test/built-ins/Object/defineProperty/15.2.3.6-4-381.js
+++ b/test/built-ins/Object/defineProperty/15.2.3.6-4-381.js
@@ -7,10 +7,8 @@ description: >
     ES5 Attributes - fail to update the data property ([[Writable]] is
     false, [[Enumerable]] is false, [[Configurable]] is false) to an
     accessor property
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
         var obj = {};
 
         Object.defineProperty(obj, "prop", {
@@ -25,14 +23,13 @@ function testcase() {
         function getFunc() {
             return 20;
         }
-        try {
+assert.throws(TypeError, function() {
             Object.defineProperty(obj, "prop", {
                 get: getFunc
             });
-            return false;
-        } catch (e) {
+});
             var desc2 = Object.getOwnPropertyDescriptor(obj, "prop");
-            return propertyDefineCorrect && desc1.value === 2010 && obj.prop === 2010 && typeof desc2.get === "undefined" && e instanceof TypeError;
-        }
-    }
-runTestCase(testcase);
+assert(propertyDefineCorrect, 'propertyDefineCorrect !== true');
+assert.sameValue(desc1.value, 2010, 'desc1.value');
+assert.sameValue(obj.prop, 2010, 'obj.prop');
+assert.sameValue(typeof desc2.get, "undefined", 'typeof desc2.get');
diff --git a/test/built-ins/Object/defineProperty/15.2.3.6-4-39.js b/test/built-ins/Object/defineProperty/15.2.3.6-4-39.js
index 077cbfe4f92f37181ec1e74db999289f6876d731..8e26fa4422f87c66c25e02b765976be035f93e6a 100644
--- a/test/built-ins/Object/defineProperty/15.2.3.6-4-39.js
+++ b/test/built-ins/Object/defineProperty/15.2.3.6-4-39.js
@@ -7,25 +7,18 @@ description: >
     Object.defineProperty - 'O' is a Date object that uses Object's
     [[GetOwnProperty]] method to access the 'name' property (8.12.9
     step 1)
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
         var desc = new Date();
 
         Object.defineProperty(desc, "foo", {
             value: 12,
             configurable: false
         });
-
-        try {
+assert.throws(TypeError, function() {
             Object.defineProperty(desc, "foo", {
                 value: 11,
                 configurable: true
             });
-            return false;
-        } catch (e) {
-            return e instanceof TypeError && desc.foo === 12;
-        }
-    }
-runTestCase(testcase);
+});
+assert.sameValue(desc.foo, 12, 'desc.foo');
diff --git a/test/built-ins/Object/defineProperty/15.2.3.6-4-40.js b/test/built-ins/Object/defineProperty/15.2.3.6-4-40.js
index e5541472a9c3f10f2e1e13b83bbf5aff9ce80d4d..bfff5ac93d80904abfdd9f8331f0ac699391458f 100644
--- a/test/built-ins/Object/defineProperty/15.2.3.6-4-40.js
+++ b/test/built-ins/Object/defineProperty/15.2.3.6-4-40.js
@@ -7,25 +7,18 @@ description: >
     Object.defineProperty - 'O' is a RegExp object that uses Object's
     [[GetOwnProperty]] method to access the 'name' property (8.12.9
     step 1)
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
         var desc = new RegExp();
 
         Object.defineProperty(desc, "foo", {
             value: 12,
             configurable: false
         });
-
-        try {
+assert.throws(TypeError, function() {
             Object.defineProperty(desc, "foo", {
                 value: 11,
                 configurable: true
             });
-            return false;
-        } catch (e) {
-            return e instanceof TypeError && desc.foo === 12;
-        }
-    }
-runTestCase(testcase);
+});
+assert.sameValue(desc.foo, 12, 'desc.foo');
diff --git a/test/built-ins/Object/defineProperty/15.2.3.6-4-42.js b/test/built-ins/Object/defineProperty/15.2.3.6-4-42.js
index 4c5524806cd08ebd59069783d4724dcb46e806f1..2ca95325b31e937cb7e07e3868362c4337692c98 100644
--- a/test/built-ins/Object/defineProperty/15.2.3.6-4-42.js
+++ b/test/built-ins/Object/defineProperty/15.2.3.6-4-42.js
@@ -7,25 +7,18 @@ description: >
     Object.defineProperty - 'O' is an Error object that uses Object's
     [[GetOwnProperty]] method to access the 'name' property (8.12.9
     step 1)
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
         var desc = new Error();
 
         Object.defineProperty(desc, "foo", {
             value: 12,
             configurable: false
         });
-
-        try {
+assert.throws(TypeError, function() {
             Object.defineProperty(desc, "foo", {
                 value: 11,
                 configurable: true
             });
-            return false;
-        } catch (e) {
-            return e instanceof TypeError && desc.foo === 12;
-        }
-    }
-runTestCase(testcase);
+});
+assert.sameValue(desc.foo, 12, 'desc.foo');
diff --git a/test/built-ins/Object/defineProperty/15.2.3.6-4-43.js b/test/built-ins/Object/defineProperty/15.2.3.6-4-43.js
index a0ad64d78074847953c67a76cca2be6d1cda3bd9..4146385ecb5eba5c0e32c5d43eb31f04406842ee 100644
--- a/test/built-ins/Object/defineProperty/15.2.3.6-4-43.js
+++ b/test/built-ins/Object/defineProperty/15.2.3.6-4-43.js
@@ -7,25 +7,18 @@ description: >
     Object.defineProperty - 'O' is an Arguments object which
     implements its own [[GetOwnProperty]] method to access the 'name'
     property (8.12.9 step 1)
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
         var argObj = (function () { return arguments; })();
 
         Object.defineProperty(argObj, "foo", {
             value: 12,
             configurable: false
         });
-
-        try {
+assert.throws(TypeError, function() {
             Object.defineProperty(argObj, "foo", {
                 value: 11,
                 configurable: true
             });
-            return false;
-        } catch (e) {
-            return e instanceof TypeError && argObj.foo === 12;
-        }
-    }
-runTestCase(testcase);
+});
+assert.sameValue(argObj.foo, 12, 'argObj.foo');
diff --git a/test/built-ins/Object/defineProperty/15.2.3.6-4-435.js b/test/built-ins/Object/defineProperty/15.2.3.6-4-435.js
index 11576b55fe94c5debca6fdca59c5ad6066a4fd50..c9537916865baa55fb68551c5b4093a1d6ce35a8 100644
--- a/test/built-ins/Object/defineProperty/15.2.3.6-4-435.js
+++ b/test/built-ins/Object/defineProperty/15.2.3.6-4-435.js
@@ -8,10 +8,8 @@ description: >
     property ([[Get]] is undefined, [[Set]] is undefined,
     [[Enumerable]] is true, [[Configurable]] is false) to different
     value
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
         var obj = {};
         var getFunc = function () {
             return 1001;
@@ -26,17 +24,14 @@ function testcase() {
 
         var result1 = typeof obj.prop === "undefined";
         var desc1 = Object.getOwnPropertyDescriptor(obj, "prop");
-
-        try {
+assert.throws(TypeError, function() {
             Object.defineProperty(obj, "prop", {
                 get: getFunc
             });
-
-            return false;
-        } catch (e) {
+});
             var result2 = typeof obj.prop === "undefined";
             var desc2 = Object.getOwnPropertyDescriptor(obj, "prop");
-            return result1 && result2 && typeof desc1.get === "undefined" && typeof desc2.get === "undefined" && e instanceof TypeError;
-        }
-    }
-runTestCase(testcase);
+assert(result1, 'result1 !== true');
+assert(result2, 'result2 !== true');
+assert.sameValue(typeof desc1.get, "undefined", 'typeof desc1.get');
+assert.sameValue(typeof desc2.get, "undefined", 'typeof desc2.get');
diff --git a/test/built-ins/Object/defineProperty/15.2.3.6-4-436.js b/test/built-ins/Object/defineProperty/15.2.3.6-4-436.js
index 84804edc66c6f6caca70103dbda52788b882a244..56a8768029905116695600bbf92d7eb4753f3a95 100644
--- a/test/built-ins/Object/defineProperty/15.2.3.6-4-436.js
+++ b/test/built-ins/Object/defineProperty/15.2.3.6-4-436.js
@@ -8,10 +8,8 @@ description: >
     property ([[Get]] is undefined, [[Set]] is undefined,
     [[Enumerable]] is true, [[Configurable]] is false) to different
     value
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
         var obj = {};
         var verifySetFunc = "data";
         var setFunc = function (value) {
@@ -26,16 +24,11 @@ function testcase() {
         });
 
         var desc1 = Object.getOwnPropertyDescriptor(obj, "prop");
-
-        try {
+assert.throws(TypeError, function() {
             Object.defineProperty(obj, "prop", {
                 set: setFunc
             });
-
-            return false;
-        } catch (e) {
+});
             var desc2 = Object.getOwnPropertyDescriptor(obj, "prop");
-            return typeof desc1.set === "undefined" && typeof desc2.set === "undefined" && e instanceof TypeError;
-        }
-    }
-runTestCase(testcase);
+assert.sameValue(typeof desc1.set, "undefined", 'typeof desc1.set');
+assert.sameValue(typeof desc2.set, "undefined", 'typeof desc2.set');
diff --git a/test/built-ins/Object/defineProperty/15.2.3.6-4-437.js b/test/built-ins/Object/defineProperty/15.2.3.6-4-437.js
index cc31175c46d68cd584efc8bcc99346af17207cb3..1ad84c659bc07588034683f80b3a952ae537bf30 100644
--- a/test/built-ins/Object/defineProperty/15.2.3.6-4-437.js
+++ b/test/built-ins/Object/defineProperty/15.2.3.6-4-437.js
@@ -8,10 +8,8 @@ description: >
     accessor property ([[Get]] is undefined, [[Set]] is undefined,
     [[Enumerable]] is true, [[Configurable]] is false) to different
     value
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
         var obj = {};
 
         Object.defineProperty(obj, "prop", {
@@ -27,14 +25,11 @@ function testcase() {
                 result1 = true;
             }
         }
-
-        try {
+assert.throws(TypeError, function() {
             Object.defineProperty(obj, "prop", {
                 enumerable: false
             });
-
-            return false;
-        } catch (e) {
+});
             var result2 = false;
             var desc2 = Object.getOwnPropertyDescriptor(obj, "prop");
             for (var p2 in obj) {
@@ -43,7 +38,7 @@ function testcase() {
                 }
             }
 
-            return result1 && result2 && desc1.enumerable === true && desc2.enumerable === true && e instanceof TypeError;
-        }
-    }
-runTestCase(testcase);
+assert(result1, 'result1 !== true');
+assert(result2, 'result2 !== true');
+assert.sameValue(desc1.enumerable, true, 'desc1.enumerable');
+assert.sameValue(desc2.enumerable, true, 'desc2.enumerable');
diff --git a/test/built-ins/Object/defineProperty/15.2.3.6-4-439.js b/test/built-ins/Object/defineProperty/15.2.3.6-4-439.js
index 0be18cdb8bf261a9c4fe79c85d70a9ca7ffdf3e1..ce40ec27b3d42dc8b1d8a00025fb56180476daa8 100644
--- a/test/built-ins/Object/defineProperty/15.2.3.6-4-439.js
+++ b/test/built-ins/Object/defineProperty/15.2.3.6-4-439.js
@@ -7,10 +7,8 @@ description: >
     ES5 Attributes - fail to update the accessor property ([[Get]] is
     undefined, [[Set]] is undefined, [[Enumerable]] is true,
     [[Configurable]] is false) to a data property
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
         var obj = {};
 
         Object.defineProperty(obj, "prop", {
@@ -20,17 +18,12 @@ function testcase() {
             configurable: false
         });
         var desc1 = Object.getOwnPropertyDescriptor(obj, "prop");
-
-        try {
+assert.throws(TypeError, function() {
             Object.defineProperty(obj, "prop", {
                 value: 1001
             });
-
-            return false;
-        } catch (e) {
+});
             var desc2 = Object.getOwnPropertyDescriptor(obj, "prop");
 
-            return desc1.hasOwnProperty("get") && !desc2.hasOwnProperty("value") && e instanceof TypeError;
-        }
-    }
-runTestCase(testcase);
+assert(desc1.hasOwnProperty("get"), 'desc1.hasOwnProperty("get") !== true');
+assert.sameValue(desc2.hasOwnProperty("value"), false, 'desc2.hasOwnProperty("value")');
diff --git a/test/built-ins/Object/defineProperty/15.2.3.6-4-453.js b/test/built-ins/Object/defineProperty/15.2.3.6-4-453.js
index dac2a2b3397d858c576d664bd4e0abb8dde19c8a..c0780c55bbf3d2545cdf03a19ad122b7a01affcf 100644
--- a/test/built-ins/Object/defineProperty/15.2.3.6-4-453.js
+++ b/test/built-ins/Object/defineProperty/15.2.3.6-4-453.js
@@ -8,10 +8,8 @@ description: >
     property ([[Get]] is undefined, [[Set]] is undefined,
     [[Enumerable]] is false, [[Configurable]] is false) to different
     value
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
         var obj = {};
         var getFunc = function () {
             return 1001;
@@ -26,17 +24,14 @@ function testcase() {
 
         var result1 = typeof obj.prop === "undefined";
         var desc1 = Object.getOwnPropertyDescriptor(obj, "prop");
-
-        try {
+assert.throws(TypeError, function() {
             Object.defineProperty(obj, "prop", {
                 get: getFunc
             });
-
-            return false;
-        } catch (e) {
+});
             var result2 = typeof obj.prop === "undefined";
             var desc2 = Object.getOwnPropertyDescriptor(obj, "prop");
-            return result1 && result2 && typeof desc1.get === "undefined" && typeof desc2.get === "undefined" && e instanceof TypeError;
-        }
-    }
-runTestCase(testcase);
+assert(result1, 'result1 !== true');
+assert(result2, 'result2 !== true');
+assert.sameValue(typeof desc1.get, "undefined", 'typeof desc1.get');
+assert.sameValue(typeof desc2.get, "undefined", 'typeof desc2.get');
diff --git a/test/built-ins/Object/defineProperty/15.2.3.6-4-454.js b/test/built-ins/Object/defineProperty/15.2.3.6-4-454.js
index 1c1b6e852b52e700528d1849b4fa2992ccb0e90a..52e445972a3011d73e6470bf47c7d63fb8ecebf0 100644
--- a/test/built-ins/Object/defineProperty/15.2.3.6-4-454.js
+++ b/test/built-ins/Object/defineProperty/15.2.3.6-4-454.js
@@ -8,10 +8,8 @@ description: >
     property ([[Get]] is undefined, [[Set]] is undefined,
     [[Enumerable]] is false, [[Configurable]] is false) to different
     value
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
         var obj = {};
 
         var verifySetFunc = "data";
@@ -27,16 +25,11 @@ function testcase() {
         });
 
         var desc1 = Object.getOwnPropertyDescriptor(obj, "prop");
-
-        try {
+assert.throws(TypeError, function() {
             Object.defineProperty(obj, "prop", {
                 set: setFunc
             });
-
-            return false;
-        } catch (e) {
+});
             var desc2 = Object.getOwnPropertyDescriptor(obj, "prop");
-            return typeof desc1.set === "undefined" && typeof desc2.set === "undefined" && e instanceof TypeError;
-        }
-    }
-runTestCase(testcase);
+assert.sameValue(typeof desc1.set, "undefined", 'typeof desc1.set');
+assert.sameValue(typeof desc2.set, "undefined", 'typeof desc2.set');
diff --git a/test/built-ins/Object/defineProperty/15.2.3.6-4-455.js b/test/built-ins/Object/defineProperty/15.2.3.6-4-455.js
index 74a99987d22c2d5368c536e92a79f1e70a28468f..baad8246678a531798aec6d6db9954fa9de527ba 100644
--- a/test/built-ins/Object/defineProperty/15.2.3.6-4-455.js
+++ b/test/built-ins/Object/defineProperty/15.2.3.6-4-455.js
@@ -8,10 +8,8 @@ description: >
     accessor property ([[Get]] is undefined, [[Set]] is undefined,
     [[Enumerable]] is false, [[Configurable]] is false) to different
     value
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
         var obj = {};
 
         Object.defineProperty(obj, "prop", {
@@ -27,14 +25,11 @@ function testcase() {
                 result1 = true;
             }
         }
-
-        try {
+assert.throws(TypeError, function() {
             Object.defineProperty(obj, "prop", {
                 enumerable: true
             });
-
-            return false;
-        } catch (e) {
+});
             var result2 = false;
             var desc2 = Object.getOwnPropertyDescriptor(obj, "prop");
             for (var p2 in obj) {
@@ -43,7 +38,7 @@ function testcase() {
                 }
             }
 
-            return !result1 && !result2 && desc1.enumerable === false && desc2.enumerable === false && e instanceof TypeError;
-        }
-    }
-runTestCase(testcase);
+assert.sameValue(result1, false, 'result1');
+assert.sameValue(result2, false, 'result2');
+assert.sameValue(desc1.enumerable, false, 'desc1.enumerable');
+assert.sameValue(desc2.enumerable, false, 'desc2.enumerable');
diff --git a/test/built-ins/Object/defineProperty/15.2.3.6-4-457.js b/test/built-ins/Object/defineProperty/15.2.3.6-4-457.js
index 9bb5c03abe68ac0cdbcee7f791c297b7ba9e761c..7f90aa37970cb9290f2fd3660d8cedb749721157 100644
--- a/test/built-ins/Object/defineProperty/15.2.3.6-4-457.js
+++ b/test/built-ins/Object/defineProperty/15.2.3.6-4-457.js
@@ -7,10 +7,8 @@ description: >
     ES5 Attributes - fail to update the accessor property ([[Get]] is
     undefined, [[Set]] is undefined, [[Enumerable]] is false,
     [[Configurable]] is false) to a data property
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
         var obj = {};
 
         Object.defineProperty(obj, "prop", {
@@ -20,17 +18,12 @@ function testcase() {
             configurable: false
         });
         var desc1 = Object.getOwnPropertyDescriptor(obj, "prop");
-
-        try {
+assert.throws(TypeError, function() {
             Object.defineProperty(obj, "prop", {
                 value: 1001
             });
-
-            return false;
-        } catch (e) {
+});
             var desc2 = Object.getOwnPropertyDescriptor(obj, "prop");
 
-            return desc1.hasOwnProperty("get") && !desc2.hasOwnProperty("value") && e instanceof TypeError;
-        }
-    }
-runTestCase(testcase);
+assert(desc1.hasOwnProperty("get"), 'desc1.hasOwnProperty("get") !== true');
+assert.sameValue(desc2.hasOwnProperty("value"), false, 'desc2.hasOwnProperty("value")');
diff --git a/test/built-ins/Object/defineProperty/15.2.3.6-4-471.js b/test/built-ins/Object/defineProperty/15.2.3.6-4-471.js
index 58813e18ddd8df2d203e43b3a1f5f25e2c707a8b..1d0099628761d5a2b7194343b68513efaff22366 100644
--- a/test/built-ins/Object/defineProperty/15.2.3.6-4-471.js
+++ b/test/built-ins/Object/defineProperty/15.2.3.6-4-471.js
@@ -8,10 +8,8 @@ description: >
     property ([[Get]] is undefined, [[Set]] is a Function,
     [[Enumerable]] is true, [[Configurable]] is false) to different
     value
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
         var obj = {};
 
         var getFunc = function () {
@@ -32,18 +30,15 @@ function testcase() {
 
         var result1 = typeof obj.prop === "undefined";
         var desc1 = Object.getOwnPropertyDescriptor(obj, "prop");
-
-        try {
+assert.throws(TypeError, function() {
             Object.defineProperty(obj, "prop", {
                 get: getFunc
             });
-
-            return false;
-        } catch (e) {
+});
             var result2 = typeof obj.prop === "undefined";
             var desc2 = Object.getOwnPropertyDescriptor(obj, "prop");
 
-            return result1 && result2 && typeof desc1.get === "undefined" && typeof desc2.get === "undefined" && e instanceof TypeError;
-        }
-    }
-runTestCase(testcase);
+assert(result1, 'result1 !== true');
+assert(result2, 'result2 !== true');
+assert.sameValue(typeof desc1.get, "undefined", 'typeof desc1.get');
+assert.sameValue(typeof desc2.get, "undefined", 'typeof desc2.get');
diff --git a/test/built-ins/Object/defineProperty/15.2.3.6-4-472.js b/test/built-ins/Object/defineProperty/15.2.3.6-4-472.js
index b19d317601aa6c8b5baf942991b3dcf67b348929..1502c79c168d98b553bfb1d05fdc3e7571c83902 100644
--- a/test/built-ins/Object/defineProperty/15.2.3.6-4-472.js
+++ b/test/built-ins/Object/defineProperty/15.2.3.6-4-472.js
@@ -8,10 +8,8 @@ description: >
     property ([[Get]] is undefined, [[Set]] is a Function,
     [[Enumerable]] is true, [[Configurable]] is false) to different
     value
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
         var obj = {};
 
         var verifySetFunc = "data";
@@ -27,17 +25,12 @@ function testcase() {
         });
 
         var desc1 = Object.getOwnPropertyDescriptor(obj, "prop");
-
-        try {
+assert.throws(TypeError, function() {
             Object.defineProperty(obj, "prop", {
                 set: undefined
             });
-
-            return false;
-        } catch (e) {
+});
             var desc2 = Object.getOwnPropertyDescriptor(obj, "prop");
 
-            return desc1.set === setFunc && desc2.set === setFunc && e instanceof TypeError;
-        }
-    }
-runTestCase(testcase);
+assert.sameValue(desc1.set, setFunc, 'desc1.set');
+assert.sameValue(desc2.set, setFunc, 'desc2.set');
diff --git a/test/built-ins/Object/defineProperty/15.2.3.6-4-473.js b/test/built-ins/Object/defineProperty/15.2.3.6-4-473.js
index a004a0e6868304ada860ad1521590354cd70c7f2..a9c65d14d7f58eb63c4393b063cf6d4f2dbc8991 100644
--- a/test/built-ins/Object/defineProperty/15.2.3.6-4-473.js
+++ b/test/built-ins/Object/defineProperty/15.2.3.6-4-473.js
@@ -8,10 +8,8 @@ description: >
     accessor property ([[Get]] is undefined, [[Set]] is a Function,
     [[Enumerable]] is true, [[Configurable]] is false) to different
     value
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
         var obj = {};
 
         var verifySetFunc = "data";
@@ -33,14 +31,11 @@ function testcase() {
                 result1 = true;
             }
         }
-
-        try {
+assert.throws(TypeError, function() {
             Object.defineProperty(obj, "prop", {
                 enumerable: false
             });
-
-            return false;
-        } catch (e) {
+});
             var result2 = false;
             var desc2 = Object.getOwnPropertyDescriptor(obj, "prop");
             for (var p2 in obj) {
@@ -49,7 +44,7 @@ function testcase() {
                 }
             }
 
-            return result1 && result2 && desc1.enumerable === true && desc2.enumerable === true && e instanceof TypeError;
-        }
-    }
-runTestCase(testcase);
+assert(result1, 'result1 !== true');
+assert(result2, 'result2 !== true');
+assert.sameValue(desc1.enumerable, true, 'desc1.enumerable');
+assert.sameValue(desc2.enumerable, true, 'desc2.enumerable');
diff --git a/test/built-ins/Object/defineProperty/15.2.3.6-4-475.js b/test/built-ins/Object/defineProperty/15.2.3.6-4-475.js
index 63827bb2dc8664822fec7143b97805578e65837a..1ea58556c10d2a80f5ad32fdd851ad4957cbcca0 100644
--- a/test/built-ins/Object/defineProperty/15.2.3.6-4-475.js
+++ b/test/built-ins/Object/defineProperty/15.2.3.6-4-475.js
@@ -7,10 +7,8 @@ description: >
     ES5 Attributes - fail to update the accessor property ([[Get]] is
     undefined, [[Set]] is a Function, [[Enumerable]] is true,
     [[Configurable]] is false) to a data property
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
         var obj = {};
 
         var verifySetFunc = "data";
@@ -25,17 +23,12 @@ function testcase() {
             configurable: false
         });
         var desc1 = Object.getOwnPropertyDescriptor(obj, "prop");
-
-        try {
+assert.throws(TypeError, function() {
             Object.defineProperty(obj, "prop", {
                 value: 1001
             });
-
-            return false;
-        } catch (e) {
+});
             var desc2 = Object.getOwnPropertyDescriptor(obj, "prop");
 
-            return desc1.hasOwnProperty("get") && !desc2.hasOwnProperty("value") && e instanceof TypeError;
-        }
-    }
-runTestCase(testcase);
+assert(desc1.hasOwnProperty("get"), 'desc1.hasOwnProperty("get") !== true');
+assert.sameValue(desc2.hasOwnProperty("value"), false, 'desc2.hasOwnProperty("value")');
diff --git a/test/built-ins/Object/defineProperty/15.2.3.6-4-489.js b/test/built-ins/Object/defineProperty/15.2.3.6-4-489.js
index d6a8997ed3be6b87f014b951bf7bb77a8c4b4a8e..18e561052b3f50a12f7f2ed58189f45c9740f7e2 100644
--- a/test/built-ins/Object/defineProperty/15.2.3.6-4-489.js
+++ b/test/built-ins/Object/defineProperty/15.2.3.6-4-489.js
@@ -8,10 +8,8 @@ description: >
     property ([[Get]] is undefined, [[Set]] is a Function,
     [[Enumerable]] is false, [[Configurable]] is false) to different
     value
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
         var obj = {};
 
         var getFunc = function () {
@@ -32,18 +30,15 @@ function testcase() {
 
         var result1 = typeof obj.prop === "undefined";
         var desc1 = Object.getOwnPropertyDescriptor(obj, "prop");
-
-        try {
+assert.throws(TypeError, function() {
             Object.defineProperty(obj, "prop", {
                 get: getFunc
             });
-
-            return false;
-        } catch (e) {
+});
             var result2 = typeof obj.prop === "undefined";
             var desc2 = Object.getOwnPropertyDescriptor(obj, "prop");
 
-            return result1 && result2 && typeof desc1.get === "undefined" && typeof desc2.get === "undefined" && e instanceof TypeError;
-        }
-    }
-runTestCase(testcase);
+assert(result1, 'result1 !== true');
+assert(result2, 'result2 !== true');
+assert.sameValue(typeof desc1.get, "undefined", 'typeof desc1.get');
+assert.sameValue(typeof desc2.get, "undefined", 'typeof desc2.get');
diff --git a/test/built-ins/Object/defineProperty/15.2.3.6-4-490.js b/test/built-ins/Object/defineProperty/15.2.3.6-4-490.js
index ee9586443a169149089b6a4b4a12325d72858bc3..a397f74ee90ac5a5f78f51052c0a1bd9e71433a6 100644
--- a/test/built-ins/Object/defineProperty/15.2.3.6-4-490.js
+++ b/test/built-ins/Object/defineProperty/15.2.3.6-4-490.js
@@ -8,10 +8,8 @@ description: >
     property ([[Get]] is undefined, [[Set]] is a Function,
     [[Enumerable]] is false, [[Configurable]] is false) to different
     value
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
         var obj = {};
 
         var verifySetFunc = "data";
@@ -27,17 +25,12 @@ function testcase() {
         });
 
         var desc1 = Object.getOwnPropertyDescriptor(obj, "prop");
-
-        try {
+assert.throws(TypeError, function() {
             Object.defineProperty(obj, "prop", {
                 set: undefined
             });
-
-            return false;
-        } catch (e) {
+});
             var desc2 = Object.getOwnPropertyDescriptor(obj, "prop");
 
-            return desc1.set === setFunc && desc2.set === setFunc && e instanceof TypeError;
-        }
-    }
-runTestCase(testcase);
+assert.sameValue(desc1.set, setFunc, 'desc1.set');
+assert.sameValue(desc2.set, setFunc, 'desc2.set');
diff --git a/test/built-ins/Object/defineProperty/15.2.3.6-4-491.js b/test/built-ins/Object/defineProperty/15.2.3.6-4-491.js
index a382a2d6b7bdb58b29e183c6b45a3314067c5b70..04c26899b302979878f4f5ef785009857f827912 100644
--- a/test/built-ins/Object/defineProperty/15.2.3.6-4-491.js
+++ b/test/built-ins/Object/defineProperty/15.2.3.6-4-491.js
@@ -8,10 +8,8 @@ description: >
     accessor property ([[Get]] is undefined, [[Set]] is a Function,
     [[Enumerable]] is false, [[Configurable]] is false) to different
     value
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
         var obj = {};
 
         var verifySetFunc = "data";
@@ -33,14 +31,11 @@ function testcase() {
                 result1 = true;
             }
         }
-
-        try {
+assert.throws(TypeError, function() {
             Object.defineProperty(obj, "prop", {
                 enumerable: true
             });
-
-            return false;
-        } catch (e) {
+});
             var result2 = false;
             var desc2 = Object.getOwnPropertyDescriptor(obj, "prop");
             for (var p2 in obj) {
@@ -49,7 +44,7 @@ function testcase() {
                 }
             }
 
-            return !result1 && !result2 && desc1.enumerable === false && desc2.enumerable === false && e instanceof TypeError;
-        }
-    }
-runTestCase(testcase);
+assert.sameValue(result1, false, 'result1');
+assert.sameValue(result2, false, 'result2');
+assert.sameValue(desc1.enumerable, false, 'desc1.enumerable');
+assert.sameValue(desc2.enumerable, false, 'desc2.enumerable');
diff --git a/test/built-ins/Object/defineProperty/15.2.3.6-4-493.js b/test/built-ins/Object/defineProperty/15.2.3.6-4-493.js
index 28b9d24b899d41864c735b0698996e702c212d1c..8e51a7fd8024139ee292f8daab4637b9557aa4e6 100644
--- a/test/built-ins/Object/defineProperty/15.2.3.6-4-493.js
+++ b/test/built-ins/Object/defineProperty/15.2.3.6-4-493.js
@@ -7,10 +7,8 @@ description: >
     ES5 Attributes - fail to update the accessor property ([[Get]] is
     undefined, [[Set]] is a Function, [[Enumerable]] is false,
     [[Configurable]] is false) to a data property
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
         var obj = {};
 
         var verifySetFunc = "data";
@@ -25,17 +23,12 @@ function testcase() {
             configurable: false
         });
         var desc1 = Object.getOwnPropertyDescriptor(obj, "prop");
-
-        try {
+assert.throws(TypeError, function() {
             Object.defineProperty(obj, "prop", {
                 value: 1001
             });
-
-            return false;
-        } catch (e) {
+});
             var desc2 = Object.getOwnPropertyDescriptor(obj, "prop");
 
-            return desc1.hasOwnProperty("get") && !desc2.hasOwnProperty("value") && e instanceof TypeError;
-        }
-    }
-runTestCase(testcase);
+assert(desc1.hasOwnProperty("get"), 'desc1.hasOwnProperty("get") !== true');
+assert.sameValue(desc2.hasOwnProperty("value"), false, 'desc2.hasOwnProperty("value")');
diff --git a/test/built-ins/Object/defineProperty/15.2.3.6-4-507.js b/test/built-ins/Object/defineProperty/15.2.3.6-4-507.js
index e04445694c1fec9e3380914adfe3a5dd7d45ade1..f5ffda634d96f7fd56f501ed295c3a7e3290592c 100644
--- a/test/built-ins/Object/defineProperty/15.2.3.6-4-507.js
+++ b/test/built-ins/Object/defineProperty/15.2.3.6-4-507.js
@@ -8,10 +8,8 @@ description: >
     property ([[Get]] is a Function, [[Set]] is undefined,
     [[Enumerable]] is true, [[Configurable]] is false) to different
     value
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
         var obj = {};
         var getFunc = function () {
             return 1001;
@@ -26,18 +24,15 @@ function testcase() {
 
         var result1 = obj.prop === 1001;
         var desc1 = Object.getOwnPropertyDescriptor(obj, "prop");
-
-        try {
+assert.throws(TypeError, function() {
             Object.defineProperty(obj, "prop", {
                 get: undefined
             });
-
-            return false;
-        } catch (e) {
+});
             var result2 = obj.prop === 1001;
             var desc2 = Object.getOwnPropertyDescriptor(obj, "prop");
 
-            return result1 && result2 && desc1.get === getFunc && desc2.get === getFunc && e instanceof TypeError;
-        }
-    }
-runTestCase(testcase);
+assert(result1, 'result1 !== true');
+assert(result2, 'result2 !== true');
+assert.sameValue(desc1.get, getFunc, 'desc1.get');
+assert.sameValue(desc2.get, getFunc, 'desc2.get');
diff --git a/test/built-ins/Object/defineProperty/15.2.3.6-4-508.js b/test/built-ins/Object/defineProperty/15.2.3.6-4-508.js
index cb784f209c5462deb6aec1849e4230902ebde0ae..5aba3d35e16765777a7c39703941930688efcec5 100644
--- a/test/built-ins/Object/defineProperty/15.2.3.6-4-508.js
+++ b/test/built-ins/Object/defineProperty/15.2.3.6-4-508.js
@@ -8,10 +8,8 @@ description: >
     property ([[Get]] is a Function, [[Set]] is undefined,
     [[Enumerable]] is true, [[Configurable]] is false) to different
     value
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
         var obj = {};
 
         var getFunc = function () {
@@ -31,17 +29,12 @@ function testcase() {
         });
 
         var desc1 = Object.getOwnPropertyDescriptor(obj, "prop");
-
-        try {
+assert.throws(TypeError, function() {
             Object.defineProperty(obj, "prop", {
                 set: setFunc
             });
-
-            return false;
-        } catch (e) {
+});
             var desc2 = Object.getOwnPropertyDescriptor(obj, "prop");
 
-            return typeof desc1.set === "undefined" && typeof desc2.set === "undefined" && e instanceof TypeError;
-        }
-    }
-runTestCase(testcase);
+assert.sameValue(typeof desc1.set, "undefined", 'typeof desc1.set');
+assert.sameValue(typeof desc2.set, "undefined", 'typeof desc2.set');
diff --git a/test/built-ins/Object/defineProperty/15.2.3.6-4-509.js b/test/built-ins/Object/defineProperty/15.2.3.6-4-509.js
index fb4dc700abab08267d2d3e5d86f22dc2f5f1c82a..697a1b3c4b9dfa1a81f0b6f4f8a87c3f2957c819 100644
--- a/test/built-ins/Object/defineProperty/15.2.3.6-4-509.js
+++ b/test/built-ins/Object/defineProperty/15.2.3.6-4-509.js
@@ -8,10 +8,8 @@ description: >
     accessor property ([[Get]] is a Function, [[Set]] is undefined,
     [[Enumerable]] is true, [[Configurable]] is false) to different
     value
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
         var obj = {};
 
         var getFunc = function () {
@@ -31,14 +29,11 @@ function testcase() {
                 result1 = true;
             }
         }
-
-        try {
+assert.throws(TypeError, function() {
             Object.defineProperty(obj, "prop", {
                 enumerable: false
             });
-
-            return false;
-        } catch (e) {
+});
             var result2 = false;
             var desc2 = Object.getOwnPropertyDescriptor(obj, "prop");
             for (var p2 in obj) {
@@ -47,7 +42,7 @@ function testcase() {
                 }
             }
 
-            return result1 && result2 && desc1.enumerable === true && desc2.enumerable === true && e instanceof TypeError;
-        }
-    }
-runTestCase(testcase);
+assert(result1, 'result1 !== true');
+assert(result2, 'result2 !== true');
+assert.sameValue(desc1.enumerable, true, 'desc1.enumerable');
+assert.sameValue(desc2.enumerable, true, 'desc2.enumerable');
diff --git a/test/built-ins/Object/defineProperty/15.2.3.6-4-511.js b/test/built-ins/Object/defineProperty/15.2.3.6-4-511.js
index b6289d44855bc059aa444a56ac1a6d3c248e6433..d3c44cf0bf414d43772b8a534e6454d41f57d859 100644
--- a/test/built-ins/Object/defineProperty/15.2.3.6-4-511.js
+++ b/test/built-ins/Object/defineProperty/15.2.3.6-4-511.js
@@ -7,10 +7,8 @@ description: >
     ES5 Attributes - fail to update the accessor property ([[Get]] is
     a Function, [[Set]] is undefined, [[Enumerable]] is true,
     [[Configurable]] is false) to a data property
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
         var obj = {};
 
         var getFunc = function () {
@@ -24,17 +22,12 @@ function testcase() {
             configurable: false
         });
         var desc1 = Object.getOwnPropertyDescriptor(obj, "prop");
-
-        try {
+assert.throws(TypeError, function() {
             Object.defineProperty(obj, "prop", {
                 value: 1001
             });
-
-            return false;
-        } catch (e) {
+});
             var desc2 = Object.getOwnPropertyDescriptor(obj, "prop");
 
-            return desc1.hasOwnProperty("get") && !desc2.hasOwnProperty("value") && e instanceof TypeError;
-        }
-    }
-runTestCase(testcase);
+assert(desc1.hasOwnProperty("get"), 'desc1.hasOwnProperty("get") !== true');
+assert.sameValue(desc2.hasOwnProperty("value"), false, 'desc2.hasOwnProperty("value")');
diff --git a/test/built-ins/Object/defineProperty/15.2.3.6-4-525.js b/test/built-ins/Object/defineProperty/15.2.3.6-4-525.js
index 55bc619abbc54d215b1db9b8b6305ad6985593be..1ac4af8f8c5739ff49d4cc976da98c2bebdab98f 100644
--- a/test/built-ins/Object/defineProperty/15.2.3.6-4-525.js
+++ b/test/built-ins/Object/defineProperty/15.2.3.6-4-525.js
@@ -8,10 +8,8 @@ description: >
     property ([[Get]] is a Function, [[Set]] is undefined,
     [[Enumerable]] is false, [[Configurable]] is false) to different
     value
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
         var obj = {};
         var getFunc = function () {
             return 1001;
@@ -26,18 +24,15 @@ function testcase() {
 
         var result1 = obj.prop === 1001;
         var desc1 = Object.getOwnPropertyDescriptor(obj, "prop");
-
-        try {
+assert.throws(TypeError, function() {
             Object.defineProperty(obj, "prop", {
                 get: undefined
             });
-
-            return false;
-        } catch (e) {
+});
             var result2 = obj.prop === 1001;
             var desc2 = Object.getOwnPropertyDescriptor(obj, "prop");
 
-            return result1 && result2 && desc1.get === getFunc && desc2.get === getFunc && e instanceof TypeError;
-        }
-    }
-runTestCase(testcase);
+assert(result1, 'result1 !== true');
+assert(result2, 'result2 !== true');
+assert.sameValue(desc1.get, getFunc, 'desc1.get');
+assert.sameValue(desc2.get, getFunc, 'desc2.get');
diff --git a/test/built-ins/Object/defineProperty/15.2.3.6-4-526.js b/test/built-ins/Object/defineProperty/15.2.3.6-4-526.js
index 92edac2a66ece4150053b51444e77f88652cf65c..620c61a24fbd20a29c22189972b93bd5e4d9ea54 100644
--- a/test/built-ins/Object/defineProperty/15.2.3.6-4-526.js
+++ b/test/built-ins/Object/defineProperty/15.2.3.6-4-526.js
@@ -8,10 +8,8 @@ description: >
     property ([[Get]] is a Function, [[Set]] is undefined,
     [[Enumerable]] is false, [[Configurable]] is false) to different
     value
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
         var obj = {};
 
         var getFunc = function () {
@@ -31,17 +29,12 @@ function testcase() {
         });
 
         var desc1 = Object.getOwnPropertyDescriptor(obj, "prop");
-
-        try {
+assert.throws(TypeError, function() {
             Object.defineProperty(obj, "prop", {
                 set: setFunc
             });
-
-            return false;
-        } catch (e) {
+});
             var desc2 = Object.getOwnPropertyDescriptor(obj, "prop");
 
-            return typeof desc1.set === "undefined" && typeof desc2.set === "undefined" && e instanceof TypeError;
-        }
-    }
-runTestCase(testcase);
+assert.sameValue(typeof desc1.set, "undefined", 'typeof desc1.set');
+assert.sameValue(typeof desc2.set, "undefined", 'typeof desc2.set');
diff --git a/test/built-ins/Object/defineProperty/15.2.3.6-4-527.js b/test/built-ins/Object/defineProperty/15.2.3.6-4-527.js
index efa02dc5dd22bd8dafb1241398c3ba3872595c53..a1cc85f9ab429b636595b4534d15eae4051104a7 100644
--- a/test/built-ins/Object/defineProperty/15.2.3.6-4-527.js
+++ b/test/built-ins/Object/defineProperty/15.2.3.6-4-527.js
@@ -8,10 +8,8 @@ description: >
     accessor property ([[Get]] is a Function, [[Set]] is undefined,
     [[Enumerable]] is false, [[Configurable]] is false) to different
     value
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
         var obj = {};
 
         var getFunc = function () {
@@ -31,14 +29,11 @@ function testcase() {
                 result1 = true;
             }
         }
-
-        try {
+assert.throws(TypeError, function() {
             Object.defineProperty(obj, "prop", {
                 enumerable: true
             });
-
-            return false;
-        } catch (e) {
+});
             var result2 = false;
             var desc2 = Object.getOwnPropertyDescriptor(obj, "prop");
             for (var p2 in obj) {
@@ -47,7 +42,7 @@ function testcase() {
                 }
             }
 
-            return !result1 && !result2 && desc1.enumerable === false && desc2.enumerable === false && e instanceof TypeError;
-        }
-    }
-runTestCase(testcase);
+assert.sameValue(result1, false, 'result1');
+assert.sameValue(result2, false, 'result2');
+assert.sameValue(desc1.enumerable, false, 'desc1.enumerable');
+assert.sameValue(desc2.enumerable, false, 'desc2.enumerable');
diff --git a/test/built-ins/Object/defineProperty/15.2.3.6-4-529.js b/test/built-ins/Object/defineProperty/15.2.3.6-4-529.js
index 299e5651778b3a5ed1f1db499f8f5de2c132e94e..891797eb9cfdfe1be9f0f29319062c53d98817e9 100644
--- a/test/built-ins/Object/defineProperty/15.2.3.6-4-529.js
+++ b/test/built-ins/Object/defineProperty/15.2.3.6-4-529.js
@@ -7,10 +7,8 @@ description: >
     ES5 Attributes - fail to update the accessor property ([[Get]] is
     a Function, [[Set]] is undefined, [[Enumerable]] is false,
     [[Configurable]] is false) to a data property
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
         var obj = {};
 
         var getFunc = function () {
@@ -24,17 +22,12 @@ function testcase() {
             configurable: false
         });
         var desc1 = Object.getOwnPropertyDescriptor(obj, "prop");
-
-        try {
+assert.throws(TypeError, function() {
             Object.defineProperty(obj, "prop", {
                 value: 1001
             });
-
-            return false;
-        } catch (e) {
+});
             var desc2 = Object.getOwnPropertyDescriptor(obj, "prop");
 
-            return desc1.hasOwnProperty("get") && !desc2.hasOwnProperty("value") && e instanceof TypeError;
-        }
-    }
-runTestCase(testcase);
+assert(desc1.hasOwnProperty("get"), 'desc1.hasOwnProperty("get") !== true');
+assert.sameValue(desc2.hasOwnProperty("value"), false, 'desc2.hasOwnProperty("value")');
diff --git a/test/built-ins/Object/defineProperty/15.2.3.6-4-543.js b/test/built-ins/Object/defineProperty/15.2.3.6-4-543.js
index b1f5f55983941ebfc99662379439db02befcbf65..7afe42f31a9c48b5a76896323ebe4a26baeb1f54 100644
--- a/test/built-ins/Object/defineProperty/15.2.3.6-4-543.js
+++ b/test/built-ins/Object/defineProperty/15.2.3.6-4-543.js
@@ -8,10 +8,8 @@ description: >
     property ([[Get]] is a Function, [[Set]] is a Function,
     [[Enumerable]] is true, [[Configurable]] is false) to different
     value
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
         var obj = {};
 
         var getFunc = function () {
@@ -32,18 +30,15 @@ function testcase() {
 
         var result1 = obj.prop === 1001;
         var desc1 = Object.getOwnPropertyDescriptor(obj, "prop");
-
-        try {
+assert.throws(TypeError, function() {
             Object.defineProperty(obj, "prop", {
                 get: undefined
             });
-
-            return false;
-        } catch (e) {
+});
             var result2 = obj.prop === 1001;
             var desc2 = Object.getOwnPropertyDescriptor(obj, "prop");
 
-            return result1 && result2 && desc1.get === getFunc && desc2.get === getFunc && e instanceof TypeError;
-        }
-    }
-runTestCase(testcase);
+assert(result1, 'result1 !== true');
+assert(result2, 'result2 !== true');
+assert.sameValue(desc1.get, getFunc, 'desc1.get');
+assert.sameValue(desc2.get, getFunc, 'desc2.get');
diff --git a/test/built-ins/Object/defineProperty/15.2.3.6-4-544.js b/test/built-ins/Object/defineProperty/15.2.3.6-4-544.js
index 6f75dd0755fb2eb47178ba1f099b0aad674ffac6..c8b18272fe4f7a220be3469cf6cf3bd482c9b818 100644
--- a/test/built-ins/Object/defineProperty/15.2.3.6-4-544.js
+++ b/test/built-ins/Object/defineProperty/15.2.3.6-4-544.js
@@ -8,10 +8,8 @@ description: >
     property ([[Get]] is a Function, [[Set]] is a Function,
     [[Enumerable]] is true, [[Configurable]] is false) to different
     value
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
         var obj = {};
 
         var getFunc = function () {
@@ -31,17 +29,12 @@ function testcase() {
         });
 
         var desc1 = Object.getOwnPropertyDescriptor(obj, "prop");
-
-        try {
+assert.throws(TypeError, function() {
             Object.defineProperty(obj, "prop", {
                 set: undefined
             });
-
-            return false;
-        } catch (e) {
+});
             var desc2 = Object.getOwnPropertyDescriptor(obj, "prop");
 
-            return desc1.set === setFunc && desc2.set === setFunc && e instanceof TypeError;
-        }
-    }
-runTestCase(testcase);
+assert.sameValue(desc1.set, setFunc, 'desc1.set');
+assert.sameValue(desc2.set, setFunc, 'desc2.set');
diff --git a/test/built-ins/Object/defineProperty/15.2.3.6-4-545.js b/test/built-ins/Object/defineProperty/15.2.3.6-4-545.js
index da86a84332aa65b78efcf5a55abd58eb180dfa17..f6150509a02b2b4f410de823760dabb32580464f 100644
--- a/test/built-ins/Object/defineProperty/15.2.3.6-4-545.js
+++ b/test/built-ins/Object/defineProperty/15.2.3.6-4-545.js
@@ -8,10 +8,8 @@ description: >
     accessor property ([[Get]] is a Function, [[Set]] is a Function,
     [[Enumerable]] is true, [[Configurable]] is false) to different
     value
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
         var obj = {};
 
         var getFunc = function () {
@@ -36,14 +34,11 @@ function testcase() {
                 result1 = true;
             }
         }
-
-        try {
+assert.throws(TypeError, function() {
             Object.defineProperty(obj, "prop", {
                 enumerable: false
             });
-
-            return false;
-        } catch (e) {
+});
             var result2 = false;
             var desc2 = Object.getOwnPropertyDescriptor(obj, "prop");
             for (var p2 in obj) {
@@ -52,7 +47,7 @@ function testcase() {
                 }
             }
 
-            return result1 && result2 && desc1.enumerable === true && desc2.enumerable === true && e instanceof TypeError;
-        }
-    }
-runTestCase(testcase);
+assert(result1, 'result1 !== true');
+assert(result2, 'result2 !== true');
+assert.sameValue(desc1.enumerable, true, 'desc1.enumerable');
+assert.sameValue(desc2.enumerable, true, 'desc2.enumerable');
diff --git a/test/built-ins/Object/defineProperty/15.2.3.6-4-547.js b/test/built-ins/Object/defineProperty/15.2.3.6-4-547.js
index 8fb4ec5f0373cc38623006b6bff790ab8dc4135c..a75fb8782e68ec691b8c72eb90c85c846fe5c2d4 100644
--- a/test/built-ins/Object/defineProperty/15.2.3.6-4-547.js
+++ b/test/built-ins/Object/defineProperty/15.2.3.6-4-547.js
@@ -7,10 +7,8 @@ description: >
     ES5 Attributes - fail to update the accessor property ([[Get]] is
     a Function, [[Set]] is a Function, [[Enumerable]] is true,
     [[Configurable]] is false) to a data property
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
         var obj = {};
 
         var getFunc = function () {
@@ -29,17 +27,12 @@ function testcase() {
             configurable: false
         });
         var desc1 = Object.getOwnPropertyDescriptor(obj, "prop");
-
-        try {
+assert.throws(TypeError, function() {
             Object.defineProperty(obj, "prop", {
                 value: 1001
             });
-
-            return false;
-        } catch (e) {
+});
             var desc2 = Object.getOwnPropertyDescriptor(obj, "prop");
 
-            return desc1.hasOwnProperty("get") && !desc2.hasOwnProperty("value") && e instanceof TypeError;
-        }
-    }
-runTestCase(testcase);
+assert(desc1.hasOwnProperty("get"), 'desc1.hasOwnProperty("get") !== true');
+assert.sameValue(desc2.hasOwnProperty("value"), false, 'desc2.hasOwnProperty("value")');
diff --git a/test/built-ins/Object/defineProperty/15.2.3.6-4-561.js b/test/built-ins/Object/defineProperty/15.2.3.6-4-561.js
index 2e4cdac50280a6f12adba3d5066d06c9008549f8..376507ea1617b0a550d76677b036f4fc8f7e8e6d 100644
--- a/test/built-ins/Object/defineProperty/15.2.3.6-4-561.js
+++ b/test/built-ins/Object/defineProperty/15.2.3.6-4-561.js
@@ -8,10 +8,8 @@ description: >
     property ([[Get]] is a Function, [[Set]] is a Function,
     [[Enumerable]] is false, [[Configurable]] is false) to different
     value
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
         var obj = {};
 
         var getFunc = function () {
@@ -32,18 +30,15 @@ function testcase() {
 
         var result1 = obj.prop === 1001;
         var desc1 = Object.getOwnPropertyDescriptor(obj, "prop");
-
-        try {
+assert.throws(TypeError, function() {
             Object.defineProperty(obj, "prop", {
                 get: undefined
             });
-
-            return false;
-        } catch (e) {
+});
             var result2 = obj.prop === 1001;
             var desc2 = Object.getOwnPropertyDescriptor(obj, "prop");
 
-            return result1 && result2 && desc1.get === getFunc && desc2.get === getFunc && e instanceof TypeError;
-        }
-    }
-runTestCase(testcase);
+assert(result1, 'result1 !== true');
+assert(result2, 'result2 !== true');
+assert.sameValue(desc1.get, getFunc, 'desc1.get');
+assert.sameValue(desc2.get, getFunc, 'desc2.get');
diff --git a/test/built-ins/Object/defineProperty/15.2.3.6-4-562.js b/test/built-ins/Object/defineProperty/15.2.3.6-4-562.js
index c299ee088f187b3bea7fcadf358b98d7316f6066..874f22ea29f7143830e75675898a6e840cf48756 100644
--- a/test/built-ins/Object/defineProperty/15.2.3.6-4-562.js
+++ b/test/built-ins/Object/defineProperty/15.2.3.6-4-562.js
@@ -8,10 +8,8 @@ description: >
     property ([[Get]] is a Function, [[Set]] is a Function,
     [[Enumerable]] is false, [[Configurable]] is false) to different
     value
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
         var obj = {};
 
         var getFunc = function () {
@@ -31,17 +29,12 @@ function testcase() {
         });
 
         var desc1 = Object.getOwnPropertyDescriptor(obj, "prop");
-
-        try {
+assert.throws(TypeError, function() {
             Object.defineProperty(obj, "prop", {
                 set: undefined
             });
-
-            return false;
-        } catch (e) {
+});
             var desc2 = Object.getOwnPropertyDescriptor(obj, "prop");
 
-            return desc1.set === setFunc && desc2.set === setFunc && e instanceof TypeError;
-        }
-    }
-runTestCase(testcase);
+assert.sameValue(desc1.set, setFunc, 'desc1.set');
+assert.sameValue(desc2.set, setFunc, 'desc2.set');
diff --git a/test/built-ins/Object/defineProperty/15.2.3.6-4-563.js b/test/built-ins/Object/defineProperty/15.2.3.6-4-563.js
index 921fd22d6ce84e9536965ab2d39942cd956676fe..56423191a57013d4c1b115c71810cdab8c1c4ad5 100644
--- a/test/built-ins/Object/defineProperty/15.2.3.6-4-563.js
+++ b/test/built-ins/Object/defineProperty/15.2.3.6-4-563.js
@@ -8,10 +8,8 @@ description: >
     accessor property ([[Get]] is a Function, [[Set]] is a Function,
     [[Enumerable]] is false, [[Configurable]] is false) to different
     value
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
         var obj = {};
 
         var getFunc = function () {
@@ -36,14 +34,11 @@ function testcase() {
                 result1 = true;
             }
         }
-
-        try {
+assert.throws(TypeError, function() {
             Object.defineProperty(obj, "prop", {
                 enumerable: true
             });
-
-            return false;
-        } catch (e) {
+});
             var result2 = false;
             var desc2 = Object.getOwnPropertyDescriptor(obj, "prop");
             for (var p2 in obj) {
@@ -52,7 +47,7 @@ function testcase() {
                 }
             }
 
-            return !result1 && !result2 && desc1.enumerable === false && desc2.enumerable === false && e instanceof TypeError;
-        }
-    }
-runTestCase(testcase);
+assert.sameValue(result1, false, 'result1');
+assert.sameValue(result2, false, 'result2');
+assert.sameValue(desc1.enumerable, false, 'desc1.enumerable');
+assert.sameValue(desc2.enumerable, false, 'desc2.enumerable');
diff --git a/test/built-ins/Object/defineProperty/15.2.3.6-4-565.js b/test/built-ins/Object/defineProperty/15.2.3.6-4-565.js
index d52f342c55b353b06777208ab477186452ed9a0f..6876df4153ea1daea56f7b7f9812ceba7b49fbd8 100644
--- a/test/built-ins/Object/defineProperty/15.2.3.6-4-565.js
+++ b/test/built-ins/Object/defineProperty/15.2.3.6-4-565.js
@@ -7,10 +7,8 @@ description: >
     ES5 Attributes - fail to update the accessor property ([[Get]] is
     a Function, [[Set]] is a Function, [[Enumerable]] is false,
     [[Configurable]] is false) to a data property
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
         var obj = {};
 
         var getFunc = function () {
@@ -29,17 +27,12 @@ function testcase() {
             configurable: false
         });
         var desc1 = Object.getOwnPropertyDescriptor(obj, "prop");
-
-        try {
+assert.throws(TypeError, function() {
             Object.defineProperty(obj, "prop", {
                 value: 1001
             });
-
-            return false;
-        } catch (e) {
+});
             var desc2 = Object.getOwnPropertyDescriptor(obj, "prop");
 
-            return desc1.hasOwnProperty("get") && !desc2.hasOwnProperty("value") && e instanceof TypeError;
-        }
-    }
-runTestCase(testcase);
+assert(desc1.hasOwnProperty("get"), 'desc1.hasOwnProperty("get") !== true');
+assert.sameValue(desc2.hasOwnProperty("value"), false, 'desc2.hasOwnProperty("value")');
diff --git a/test/built-ins/Object/defineProperty/15.2.3.6-4-7.js b/test/built-ins/Object/defineProperty/15.2.3.6-4-7.js
index d874014a575889a317f9aaae275de4752ffd3212..14bf5ed3606a471eb1a2c061fb5909a0dec2eff8 100644
--- a/test/built-ins/Object/defineProperty/15.2.3.6-4-7.js
+++ b/test/built-ins/Object/defineProperty/15.2.3.6-4-7.js
@@ -10,10 +10,8 @@ es5id: 15.2.3.6-4-7
 description: >
     Object.defineProperty throws TypeError when changing
     [[Configurable]] from false to true
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
   var o = {};
 
   // create a data valued property; all other attributes default to false.
@@ -21,19 +19,10 @@ function testcase() {
   Object.defineProperty(o, "foo", d1);
 
   var desc = { value: 101, configurable: true };
-
-  try {
+assert.throws(TypeError, function() {
     Object.defineProperty(o, "foo", desc);
-  }
-  catch (e) {
-    if (e instanceof TypeError) {
+});
       // the property should remain unchanged.
       var d2 = Object.getOwnPropertyDescriptor(o, "foo");
-      if (d2.value === 101 &&
-          d2.configurable === false) {
-        return true;
-      }
-    }
-  }
- }
-runTestCase(testcase);
+assert.sameValue(d2.value, 101, 'd2.value');
+assert.sameValue(d2.configurable, false, 'd2.configurable');
diff --git a/test/built-ins/Object/defineProperty/15.2.3.6-4-8.js b/test/built-ins/Object/defineProperty/15.2.3.6-4-8.js
index 43c626922baf288810d9dda9a5a90e15dc82d56d..e94862560b1afd0dcca2e4ec9c30ce88c151dfd6 100644
--- a/test/built-ins/Object/defineProperty/15.2.3.6-4-8.js
+++ b/test/built-ins/Object/defineProperty/15.2.3.6-4-8.js
@@ -12,10 +12,8 @@ description: >
     Object.defineProperty throws TypeError when changing
     [[Enumerable]] from false to true on non-configurable data
     properties
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
   var o = {};
 
   // create a data valued property; all other attributes default to false.
@@ -25,20 +23,11 @@ function testcase() {
   // now, setting enumerable to true should fail, since [[Configurable]]
   // on the original property will be false.
   var desc = { value: 101, enumerable: true };
-
-  try {
+assert.throws(TypeError, function() {
     Object.defineProperty(o, "foo", desc);
-  }
-  catch (e) {
-    if (e instanceof TypeError) {
+});
       // the property should remain unchanged.
       var d2 = Object.getOwnPropertyDescriptor(o, "foo");
-      if (d2.value === 101 &&
-          d2.enumerable === false &&
-          d2.configurable === false) {
-        return true;
-      }
-    }
-  }
- }
-runTestCase(testcase);
+assert.sameValue(d2.value, 101, 'd2.value');
+assert.sameValue(d2.enumerable, false, 'd2.enumerable');
+assert.sameValue(d2.configurable, false, 'd2.configurable');
diff --git a/test/built-ins/Object/defineProperty/15.2.3.6-4-9.js b/test/built-ins/Object/defineProperty/15.2.3.6-4-9.js
index 97bb0005ec74f8263e0972dc646361d72cc08241..6f35edc3489cabbaecf5493fe7f9339bc24b4280 100644
--- a/test/built-ins/Object/defineProperty/15.2.3.6-4-9.js
+++ b/test/built-ins/Object/defineProperty/15.2.3.6-4-9.js
@@ -12,10 +12,8 @@ description: >
     Object.defineProperty throws TypeError when changing
     [[Enumerable]] from true to false on non-configurable data
     properties
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
   var o = {};
 
   // create a data valued property with [[Enumerable]] explicitly set to true;
@@ -26,20 +24,11 @@ function testcase() {
   // now, setting enumerable to false should fail, since [[Configurable]]
   // on the original property will be false.
   var desc = { value: 101, enumerable: false };
-
-  try {
+assert.throws(TypeError, function() {
     Object.defineProperty(o, "foo", desc);
-  }
-  catch (e) {
-    if (e instanceof TypeError) {
+});
       // the property should remain unchanged.
       var d2 = Object.getOwnPropertyDescriptor(o, "foo");
-      if (d2.value === 101 &&
-          d2.enumerable === true &&
-          d2.configurable === false) {
-        return true;
-      }
-    }
-  }
- }
-runTestCase(testcase);
+assert.sameValue(d2.value, 101, 'd2.value');
+assert.sameValue(d2.enumerable, true, 'd2.enumerable');
+assert.sameValue(d2.configurable, false, 'd2.configurable');
diff --git a/test/built-ins/Object/getOwnPropertyDescriptor/15.2.3.3-1-1.js b/test/built-ins/Object/getOwnPropertyDescriptor/15.2.3.3-1-1.js
index 35ddf60308ab1cb44f44f3cc8e5ee3bb0266aa29..bc63911fa321c31e7ef8a001e23e1ffe1df2549e 100644
--- a/test/built-ins/Object/getOwnPropertyDescriptor/15.2.3.3-1-1.js
+++ b/test/built-ins/Object/getOwnPropertyDescriptor/15.2.3.3-1-1.js
@@ -6,14 +6,9 @@ es5id: 15.2.3.3-1-1
 description: >
     Object.getOwnPropertyDescriptor - TypeError is thrown when first
     param is undefined
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
-        try {
+
+assert.throws(TypeError, function() {
             Object.getOwnPropertyDescriptor(undefined, "foo");
-        } catch (e) {
-            return (e instanceof TypeError);
-        }
-    }
-runTestCase(testcase);
+});
diff --git a/test/built-ins/Object/getOwnPropertyDescriptor/15.2.3.3-1-2.js b/test/built-ins/Object/getOwnPropertyDescriptor/15.2.3.3-1-2.js
index 1a6ba1417c4f4fa702205b2f7e975cc405033ee2..09b8587145bf8948dbba89a4ddfcf5febbb96b68 100644
--- a/test/built-ins/Object/getOwnPropertyDescriptor/15.2.3.3-1-2.js
+++ b/test/built-ins/Object/getOwnPropertyDescriptor/15.2.3.3-1-2.js
@@ -6,14 +6,9 @@ es5id: 15.2.3.3-1-2
 description: >
     Object.getOwnPropertyDescriptor - TypeError is thrown when first
     param is null
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
-        try {
+
+assert.throws(TypeError, function() {
             Object.getOwnPropertyDescriptor(null, "foo");
-        } catch (e) {
-            return (e instanceof TypeError);
-        }
-    }
-runTestCase(testcase);
+});
diff --git a/test/built-ins/Object/getOwnPropertyDescriptor/15.2.3.3-2-46.js b/test/built-ins/Object/getOwnPropertyDescriptor/15.2.3.3-2-46.js
index 5c894608aca831d9be588c6a0a62768d7f94e799..4527a76d35913a34f019876449e1218d92d71687 100644
--- a/test/built-ins/Object/getOwnPropertyDescriptor/15.2.3.3-2-46.js
+++ b/test/built-ins/Object/getOwnPropertyDescriptor/15.2.3.3-2-46.js
@@ -7,10 +7,8 @@ description: >
     Object.getOwnPropertyDescriptor - TypeError exception was thrown
     when 'P' is an object that both toString and valueOf wouldn't
     return primitive value
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
         var obj = { "1": 1 };
         var toStringAccessed = false;
         var valueOfAccessed = false;
@@ -25,12 +23,8 @@ function testcase() {
                 return [1];
             }
         };
-
-        try {
+assert.throws(TypeError, function() {
             Object.getOwnPropertyDescriptor(obj, ownProp);
-            return false;
-        } catch (e) {
-            return toStringAccessed && valueOfAccessed && e instanceof TypeError;
-        }
-    }
-runTestCase(testcase);
+});
+assert(toStringAccessed, 'toStringAccessed !== true');
+assert(valueOfAccessed, 'valueOfAccessed !== true');
diff --git a/test/built-ins/Object/getOwnPropertyNames/15.2.3.4-1-2.js b/test/built-ins/Object/getOwnPropertyNames/15.2.3.4-1-2.js
index 764259971f368f0ad95bb1b58da98022b1c201d1..51ce6f35f013be330e17781ca3c1fe509b629773 100644
--- a/test/built-ins/Object/getOwnPropertyNames/15.2.3.4-1-2.js
+++ b/test/built-ins/Object/getOwnPropertyNames/15.2.3.4-1-2.js
@@ -4,15 +4,9 @@
 /*---
 es5id: 15.2.3.4-1-2
 description: Object.getOwnPropertyNames throws TypeError if 'O' is undefined
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
-        try {
+
+assert.throws(TypeError, function() {
             Object.getOwnPropertyNames(undefined);
-            return false;
-        } catch (e) {
-            return e instanceof TypeError;
-        }
-    }
-runTestCase(testcase);
+});
diff --git a/test/built-ins/Object/getOwnPropertyNames/15.2.3.4-1-3.js b/test/built-ins/Object/getOwnPropertyNames/15.2.3.4-1-3.js
index cab3a3d00ca4277a3667d1a7d46d24476b7b3672..4a9ac3a33f61424f28fad2c0d633701d16538db6 100644
--- a/test/built-ins/Object/getOwnPropertyNames/15.2.3.4-1-3.js
+++ b/test/built-ins/Object/getOwnPropertyNames/15.2.3.4-1-3.js
@@ -4,15 +4,9 @@
 /*---
 es5id: 15.2.3.4-1-3
 description: Object.getOwnPropertyNames throws TypeError if 'O' is null
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
-        try {
+
+assert.throws(TypeError, function() {
             Object.getOwnPropertyNames(null);
-            return false;
-        } catch (e) {
-            return e instanceof TypeError;
-        }
-    }
-runTestCase(testcase);
+});
diff --git a/test/built-ins/Object/getPrototypeOf/15.2.3.2-0-3.js b/test/built-ins/Object/getPrototypeOf/15.2.3.2-0-3.js
index e36abd84648c883047d9a2b44397456626ccef9e..9f8eb76e027166e336d721e9393e421b2dc0d040 100644
--- a/test/built-ins/Object/getPrototypeOf/15.2.3.2-0-3.js
+++ b/test/built-ins/Object/getPrototypeOf/15.2.3.2-0-3.js
@@ -4,18 +4,9 @@
 /*---
 es5id: 15.2.3.2-0-3
 description: Object.getPrototypeOf must take 1 parameter
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
-  try
-  {
+
+assert.throws(TypeError, function() {
     Object.getPrototypeOf();
-  }
-  catch(e)
-  {
-    if(e instanceof TypeError)
-      return true;
-  }
- }
-runTestCase(testcase);
+});
diff --git a/test/built-ins/Object/getPrototypeOf/15.2.3.2-1-2.js b/test/built-ins/Object/getPrototypeOf/15.2.3.2-1-2.js
index 8e2835a3208c835ac676f74360d880a4b33c8265..3f73a4c073e687cd24675765af43af4fec2eadbf 100644
--- a/test/built-ins/Object/getPrototypeOf/15.2.3.2-1-2.js
+++ b/test/built-ins/Object/getPrototypeOf/15.2.3.2-1-2.js
@@ -4,15 +4,9 @@
 /*---
 es5id: 15.2.3.2-1-2
 description: Object.getPrototypeOf throws TypeError if 'O' is null
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
-        try {
+
+assert.throws(TypeError, function() {
             Object.getPrototypeOf(null);
-            return false;
-        } catch (e) {
-            return (e instanceof TypeError);
-        }
-    }
-runTestCase(testcase);
+});
diff --git a/test/built-ins/Object/keys/15.2.3.14-1-4.js b/test/built-ins/Object/keys/15.2.3.14-1-4.js
index 10d7acf2ab3a459dc49729c1a231627ad7591e6d..fdc5d31eecbf4853fc98019c84b7561606da81e3 100644
--- a/test/built-ins/Object/keys/15.2.3.14-1-4.js
+++ b/test/built-ins/Object/keys/15.2.3.14-1-4.js
@@ -6,17 +6,9 @@ es5id: 15.2.3.14-1-4
 description: >
     Object.keys throws TypeError if type of first param is not Object
     (null)
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
-  try {
+
+assert.throws(TypeError, function() {
     Object.keys(null);
-  }
-  catch (e) {
-    if (e instanceof TypeError) {
-      return true;
-    }
-  }
- }
-runTestCase(testcase);
+});
diff --git a/test/built-ins/Object/keys/15.2.3.14-1-5.js b/test/built-ins/Object/keys/15.2.3.14-1-5.js
index deac600fc7cf75b3a3da54e119b8db43185b27a5..fa00eb9e0de00bdde8857cbfc2f795295c99da39 100644
--- a/test/built-ins/Object/keys/15.2.3.14-1-5.js
+++ b/test/built-ins/Object/keys/15.2.3.14-1-5.js
@@ -6,17 +6,9 @@ es5id: 15.2.3.14-1-5
 description: >
     Object.keys throws TypeError if type of first param is not Object
     (undefined)
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
-  try {
+
+assert.throws(TypeError, function() {
     Object.keys(undefined);
-  }
-  catch (e) {
-    if (e instanceof TypeError) {
-      return true;
-    }
-  }
- }
-runTestCase(testcase);
+});
diff --git a/test/built-ins/Object/preventExtensions/15.2.3.10-3-5.js b/test/built-ins/Object/preventExtensions/15.2.3.10-3-5.js
index 4539ae6d80f75c573084a7b8e9fbae8ffbd308ff..def72f4f6d33d6c32f766f9205f58f1b767fd7de 100644
--- a/test/built-ins/Object/preventExtensions/15.2.3.10-3-5.js
+++ b/test/built-ins/Object/preventExtensions/15.2.3.10-3-5.js
@@ -6,19 +6,14 @@ es5id: 15.2.3.10-3-5
 description: >
     Object.preventExtensions - indexed properties cannot be added into
     a String object
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
         var strObj = new String();
         var preCheck = Object.isExtensible(strObj);
         Object.preventExtensions(strObj);
-        try {
+assert.throws(TypeError, function() {
             Object.defineProperty(strObj, "0", { value: "c" });
-            return false;
-        } catch (e) {
-            return e instanceof TypeError && preCheck &&
-                !strObj.hasOwnProperty("0") && typeof strObj[0] === "undefined";
-        }
-    }
-runTestCase(testcase);
+});
+assert(preCheck, 'preCheck !== true');
+assert.sameValue(strObj.hasOwnProperty("0"), false, 'strObj.hasOwnProperty("0")');
+assert.sameValue(typeof strObj[0], "undefined", 'typeof strObj[0]');
diff --git a/test/built-ins/RegExp/prototype/global/15.10.7.2-1.js b/test/built-ins/RegExp/prototype/global/15.10.7.2-1.js
index a3580558616994317e9deff6dad4a1799747c78b..6360511a45de50fac5cab2fccfdea97dae45805e 100644
--- a/test/built-ins/RegExp/prototype/global/15.10.7.2-1.js
+++ b/test/built-ins/RegExp/prototype/global/15.10.7.2-1.js
@@ -4,17 +4,9 @@
 /*---
 es5id: 15.10.7.2-1
 description: RegExp.prototype.global is a non-generic accessor property
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
-  try {
+
+assert.throws(TypeError, function() {
     RegExp.prototype.global;
-  } catch (e) {
-    if (e instanceof TypeError) {
-      return true;
-    }
-  }
-  return false;
-}
-runTestCase(testcase);
+});
diff --git a/test/built-ins/RegExp/prototype/ignoreCase/15.10.7.3-1.js b/test/built-ins/RegExp/prototype/ignoreCase/15.10.7.3-1.js
index 46e538c803fffd2c840d4f9b858a871d85c1a92b..53eb90a90b610c024f085b120e4c0c760fa4a0fe 100644
--- a/test/built-ins/RegExp/prototype/ignoreCase/15.10.7.3-1.js
+++ b/test/built-ins/RegExp/prototype/ignoreCase/15.10.7.3-1.js
@@ -4,17 +4,9 @@
 /*---
 es5id: 15.10.7.3-1
 description: RegExp.prototype.ignoreCase is a non-generic accessor property
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
-  try {
+
+assert.throws(TypeError, function() {
     RegExp.prototype.ignoreCase;
-  } catch (e) {
-    if (e instanceof TypeError) {
-      return true;
-    }
-  }
-  return false;
-}
-runTestCase(testcase);
+});
diff --git a/test/built-ins/RegExp/prototype/multiline/15.10.7.4-1.js b/test/built-ins/RegExp/prototype/multiline/15.10.7.4-1.js
index 147c86586332bfa82481ae5d3d65987f29212d3a..d0721f8f554154c2980555e07a41e749a731b01c 100644
--- a/test/built-ins/RegExp/prototype/multiline/15.10.7.4-1.js
+++ b/test/built-ins/RegExp/prototype/multiline/15.10.7.4-1.js
@@ -4,17 +4,9 @@
 /*---
 es5id: 15.10.7.4-1
 description: RegExp.prototype.multiline is a non-generic accessor property
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
-  try {
+
+assert.throws(TypeError, function() {
     RegExp.prototype.multiline;
-  } catch (e) {
-    if (e instanceof TypeError) {
-      return true;
-    }
-  }
-  return false;
-}
-runTestCase(testcase);
+});
diff --git a/test/built-ins/RegExp/prototype/source/15.10.7.1-1.js b/test/built-ins/RegExp/prototype/source/15.10.7.1-1.js
index 7e41735ae04dabab273b8767cd73078a7e4a6590..3a6b8130b02ef31a5d02af6bce3ea20b173d3089 100644
--- a/test/built-ins/RegExp/prototype/source/15.10.7.1-1.js
+++ b/test/built-ins/RegExp/prototype/source/15.10.7.1-1.js
@@ -4,17 +4,9 @@
 /*---
 es5id: 15.10.7.1-1
 description: RegExp.prototype.source is a non-generic accessor property
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
-  try {
+
+assert.throws(TypeError, function() {
     RegExp.prototype.source;
-  } catch (e) {
-    if (e instanceof TypeError) {
-      return true;
-    }
-  }
-  return false;
-}
-runTestCase(testcase);
+});
diff --git a/test/built-ins/String/prototype/trim/15.5.4.20-1-1.js b/test/built-ins/String/prototype/trim/15.5.4.20-1-1.js
index 3d658468660c23415fff72737081a83ac8312618..bd0bcaa1f5030bdebbcd36acf744bdedb5e4b12c 100644
--- a/test/built-ins/String/prototype/trim/15.5.4.20-1-1.js
+++ b/test/built-ins/String/prototype/trim/15.5.4.20-1-1.js
@@ -4,18 +4,9 @@
 /*---
 es5id: 15.5.4.20-1-1
 description: String.prototype.trim throws TypeError when string is undefined
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
-  try
-  {
-    String.prototype.trim.call(undefined); 
-    return false; 
-  }
-  catch(e)
-  {
-    return e instanceof TypeError;
-  }
- }
-runTestCase(testcase);
+
+assert.throws(TypeError, function() {
+    String.prototype.trim.call(undefined);
+});
diff --git a/test/built-ins/String/prototype/trim/15.5.4.20-1-2.js b/test/built-ins/String/prototype/trim/15.5.4.20-1-2.js
index b58e81ac9b31d991f418788880136c2aa7c0ffc0..d91241da246fe1756b0e08c25fc284438b8827da 100644
--- a/test/built-ins/String/prototype/trim/15.5.4.20-1-2.js
+++ b/test/built-ins/String/prototype/trim/15.5.4.20-1-2.js
@@ -4,18 +4,9 @@
 /*---
 es5id: 15.5.4.20-1-2
 description: String.prototype.trim throws TypeError when string is null
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
-  try
-  {
-    String.prototype.trim.call(null);  
-    return false;
-  }
-  catch(e)
-  {
-    return e instanceof TypeError;
-  }
- }
-runTestCase(testcase);
+
+assert.throws(TypeError, function() {
+    String.prototype.trim.call(null);
+});
diff --git a/test/built-ins/String/prototype/trim/15.5.4.20-2-42.js b/test/built-ins/String/prototype/trim/15.5.4.20-2-42.js
index 03e0bc9d9675642cb36bb017d28cdf0625014ffc..393625ce0f7db40f1cab4a41f21c9c39bae64d2a 100644
--- a/test/built-ins/String/prototype/trim/15.5.4.20-2-42.js
+++ b/test/built-ins/String/prototype/trim/15.5.4.20-2-42.js
@@ -7,10 +7,8 @@ description: >
     String.prototype.trim - TypeError exception was thrown  when
     'this' is an object that both toString and valueOf wouldn't return
     primitive value.
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
         var toStringAccessed = false;
         var valueOfAccessed = false;
         var obj = {
@@ -23,11 +21,8 @@ function testcase() {
                 return {};
             }
         };
-        try {
+assert.throws(TypeError, function() {
             String.prototype.trim.call(obj);
-            return false;
-        } catch (e) {
-            return valueOfAccessed && toStringAccessed && (e instanceof TypeError);
-        }
-    }
-runTestCase(testcase);
+});
+assert(valueOfAccessed, 'valueOfAccessed !== true');
+assert(toStringAccessed, 'toStringAccessed !== true');
diff --git a/test/built-ins/global/10.2.1.1.3-4-16-s.js b/test/built-ins/global/10.2.1.1.3-4-16-s.js
index afd320e23179f8266608ea3871c902b01d1aefe3..b5cf69ff5f391c5c5da3ec7f8b5902b537822ba3 100644
--- a/test/built-ins/global/10.2.1.1.3-4-16-s.js
+++ b/test/built-ins/global/10.2.1.1.3-4-16-s.js
@@ -7,15 +7,9 @@ description: >
     Strict Mode - TypeError is thrown when changing the value of a
     Value Property of the Global Object under strict mode (NaN)
 flags: [onlyStrict]
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
-        try {
+
+assert.throws(TypeError, function() {
             NaN = 12;
-            return false;
-        } catch (e) {
-            return e instanceof TypeError;
-        }
-    }
-runTestCase(testcase);
+});
diff --git a/test/built-ins/global/10.2.1.1.3-4-18-s.js b/test/built-ins/global/10.2.1.1.3-4-18-s.js
index 5454aba1adcfc2f78d37b5679aed25e8bdef3ddf..6a3e87eaa0cb41631c504a11be1a7c53c548ed66 100644
--- a/test/built-ins/global/10.2.1.1.3-4-18-s.js
+++ b/test/built-ins/global/10.2.1.1.3-4-18-s.js
@@ -7,15 +7,9 @@ description: >
     Strict Mode - TypeError is thrown when changing the value of a
     Value Property of the Global Object under strict mode (undefined)
 flags: [onlyStrict]
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
-        try {
+
+assert.throws(TypeError, function() {
             undefined = 12;
-            return false;
-        } catch (e) {
-            return e instanceof TypeError;
-        }
-    }
-runTestCase(testcase);
+});
diff --git a/test/language/arguments-object/10.5-1-s.js b/test/language/arguments-object/10.5-1-s.js
index bd88ae9f32733325b955567a9f3d5eba882565a2..7123cdbed664fa31076d13dc489073851f789ec0 100644
--- a/test/language/arguments-object/10.5-1-s.js
+++ b/test/language/arguments-object/10.5-1-s.js
@@ -5,17 +5,11 @@
 es5id: 10.5-1-s
 description: Strict Mode - arguments object is immutable
 flags: [onlyStrict]
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
-        try {
+
+assert.throws(SyntaxError, function() {
             (function fun() {
                 eval("arguments = 10");
             })(30);
-            return false;
-        } catch (e) {
-            return (e instanceof SyntaxError);
-        }
-    }
-runTestCase(testcase);
+});
diff --git a/test/language/arguments-object/10.5-7-b-1-s.js b/test/language/arguments-object/10.5-7-b-1-s.js
index 48da093b19c47132a94894cc2d289940d0f3905a..e02db4dd87fe28423e02233eb4a165c53005af55 100644
--- a/test/language/arguments-object/10.5-7-b-1-s.js
+++ b/test/language/arguments-object/10.5-7-b-1-s.js
@@ -5,15 +5,9 @@
 es5id: 10.5-7-b-1-s
 description: Strict Mode - arguments object is immutable in eval'ed functions
 flags: [onlyStrict]
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
-        try {
+
+assert.throws(SyntaxError, function() {
             eval("(function _10_5_7_b_1_fun() { arguments = 10;} ());");
-            return false;
-        } catch (e) {
-            return e instanceof SyntaxError;
-        }
-    }
-runTestCase(testcase);
+});
diff --git a/test/language/arguments-object/10.6-13-b-1-s.js b/test/language/arguments-object/10.6-13-b-1-s.js
index b590b2b1ff1266eb7c433471ee78265a0f973391..efa479cf3f7223915e583e01df0ec271eefb7ba5 100644
--- a/test/language/arguments-object/10.6-13-b-1-s.js
+++ b/test/language/arguments-object/10.6-13-b-1-s.js
@@ -7,17 +7,9 @@ description: >
     Accessing caller property of Arguments object throws TypeError in
     strict mode
 flags: [onlyStrict]
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
-  try 
-  {
+
+assert.throws(TypeError, function() {
     arguments.caller;
-  }
-  catch (e) {
-    if(e instanceof TypeError)
-      return true;
-  }
- }
-runTestCase(testcase);
+});
diff --git a/test/language/arguments-object/10.6-13-c-1-s.js b/test/language/arguments-object/10.6-13-c-1-s.js
index 88c3187c629d99b1fadf3ad05ae4216c039f4159..aa4b245adba897ac581b17c6a8aa41e390501443 100644
--- a/test/language/arguments-object/10.6-13-c-1-s.js
+++ b/test/language/arguments-object/10.6-13-c-1-s.js
@@ -7,17 +7,9 @@ description: >
     Accessing callee property of Arguments object throws TypeError in
     strict mode
 flags: [onlyStrict]
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
-  try 
-  {
+
+assert.throws(TypeError, function() {
     arguments.callee;
-    return false;
-  }
-  catch (e) {
-    return (e instanceof TypeError);
-  }
- }
-runTestCase(testcase);
+});
diff --git a/test/language/arguments-object/10.6-14-b-4-s.js b/test/language/arguments-object/10.6-14-b-4-s.js
index bc0da52882f10ce3b12e29de8d7dfa8625228955..2ac9023bb92feb046e59cfccab205ea8b3bfd47a 100644
--- a/test/language/arguments-object/10.6-14-b-4-s.js
+++ b/test/language/arguments-object/10.6-14-b-4-s.js
@@ -7,19 +7,11 @@ description: >
     Strict Mode - TypeError is thrown when accessing the [[Set]]
     attribute in 'caller' under strict mode
 flags: [onlyStrict]
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
         var argObj = function () {
             return arguments;
         } ();
-
-        try {
+assert.throws(TypeError, function() {
             argObj.caller = {};
-            return false;
-        } catch (e) {
-            return e instanceof TypeError;
-        }
-    }
-runTestCase(testcase);
+});
diff --git a/test/language/arguments-object/10.6-14-c-4-s.js b/test/language/arguments-object/10.6-14-c-4-s.js
index 4d7c42220efb2d4c3698fe3dc7565ffb14af878b..fbd4b155013250c92ebb772489ebb97d04ad9b0f 100644
--- a/test/language/arguments-object/10.6-14-c-4-s.js
+++ b/test/language/arguments-object/10.6-14-c-4-s.js
@@ -7,19 +7,11 @@ description: >
     Strict Mode - TypeError is thrown when accessing the [[Set]]
     attribute in 'callee' under strict mode
 flags: [onlyStrict]
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
         var argObj = function () {
             return arguments;
         } ();
-
-        try {
+assert.throws(TypeError, function() {
             argObj.callee = {};
-            return false;
-        } catch (e) {
-            return e instanceof TypeError;
-        }
-    }
-runTestCase(testcase);
+});
diff --git a/test/language/directive-prologue/10.1.1-25-s.js b/test/language/directive-prologue/10.1.1-25-s.js
index 85d0ea15e310d112ff5711a9f51841702a36e261..e726cd7f8137922ab7919c0be9b3d1be693463f4 100644
--- a/test/language/directive-prologue/10.1.1-25-s.js
+++ b/test/language/directive-prologue/10.1.1-25-s.js
@@ -8,11 +8,10 @@ description: >
     contains Use Strict Directive which appears at the start of the
     block(getter)
 flags: [noStrict]
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
-        try {
+
+assert.throws(SyntaxError, function() {
             var obj = {};
             Object.defineProperty(obj, "accProperty", {
                 get: function () {
@@ -22,9 +21,4 @@ function testcase() {
                 }
             });
             var temp = obj.accProperty === 11;
-            return false;
-        } catch (e) {
-            return e instanceof SyntaxError;
-        }
-    }
-runTestCase(testcase);
+});
diff --git a/test/language/directive-prologue/10.1.1-30-s.js b/test/language/directive-prologue/10.1.1-30-s.js
index ae39d87ccee57fed85a259bbd62ef35424d791f5..cd5b01f0a27fcf06ccdedde45797eb4578449209 100644
--- a/test/language/directive-prologue/10.1.1-30-s.js
+++ b/test/language/directive-prologue/10.1.1-30-s.js
@@ -8,16 +8,10 @@ description: >
     contains Use Strict Directive which appears at the start of the
     block
 flags: [noStrict]
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
-        try {
+
+assert.throws(SyntaxError, function() {
             var funObj = new Function("a", "'use strict'; eval('public = 1;');");
             funObj();
-            return false;
-        } catch (e) {
-            return e instanceof SyntaxError;
-        }
-    }
-runTestCase(testcase);
+});
diff --git a/test/language/expressions/assignment/11.13.1-1-1.js b/test/language/expressions/assignment/11.13.1-1-1.js
index 4832a073ca6ef800440c59043f83f64563e75f17..5bc0891b1568b12de2dbffc146fbe6394958ff59 100644
--- a/test/language/expressions/assignment/11.13.1-1-1.js
+++ b/test/language/expressions/assignment/11.13.1-1-1.js
@@ -7,17 +7,9 @@ es5id: 11.13.1-1-1
 description: >
     simple assignment throws ReferenceError if LeftHandSide is not a
     reference (number)
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
-  try {
+
+assert.throws(ReferenceError, function() {
     eval("42 = 42");
-  }
-  catch (e) {
-    if (e instanceof ReferenceError) {
-      return true;
-    }
-  }
- }
-runTestCase(testcase);
+});
diff --git a/test/language/expressions/assignment/11.13.1-1-2.js b/test/language/expressions/assignment/11.13.1-1-2.js
index 4ef12ab7d5cc6cb16cee05d6ad7e75064ec4ad83..8f42ba35b2a65ff7e725deb5b05428432b06ecee 100644
--- a/test/language/expressions/assignment/11.13.1-1-2.js
+++ b/test/language/expressions/assignment/11.13.1-1-2.js
@@ -7,17 +7,9 @@ es5id: 11.13.1-1-2
 description: >
     simple assignment throws ReferenceError if LeftHandSide is not a
     reference (string)
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
-  try {
+
+assert.throws(ReferenceError, function() {
     eval("'x' = 42");
-  }
-  catch (e) {
-    if (e instanceof ReferenceError) {
-      return true;
-    }
-  }
- }
-runTestCase(testcase);
+});
diff --git a/test/language/expressions/assignment/11.13.1-1-3.js b/test/language/expressions/assignment/11.13.1-1-3.js
index 1969b2a7f85a61a3e1bd7514d13dc9a60b5c7227..196821e97b679663e0bd101e143731bc8eddca0b 100644
--- a/test/language/expressions/assignment/11.13.1-1-3.js
+++ b/test/language/expressions/assignment/11.13.1-1-3.js
@@ -7,17 +7,9 @@ es5id: 11.13.1-1-3
 description: >
     simple assignment throws ReferenceError if LeftHandSide is not a
     reference (boolean)
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
-  try {
+
+assert.throws(ReferenceError, function() {
     eval("true = 42");
-  }
-  catch (e) {
-    if (e instanceof ReferenceError) {
-      return true;
-    }
-  }
- }
-runTestCase(testcase);
+});
diff --git a/test/language/expressions/assignment/11.13.1-1-4.js b/test/language/expressions/assignment/11.13.1-1-4.js
index 8b0dc8eb4525b8b1d15abbd987d106f7944a4cb3..4a5cb16340f7046e13e8c5395e29629837ab3bba 100644
--- a/test/language/expressions/assignment/11.13.1-1-4.js
+++ b/test/language/expressions/assignment/11.13.1-1-4.js
@@ -7,17 +7,9 @@ es5id: 11.13.1-1-4
 description: >
     simple assignment throws ReferenceError if LeftHandSide is not a
     reference (null)
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
-  try {
+
+assert.throws(ReferenceError, function() {
     eval("null = 42");
-  }
-  catch (e) {
-    if (e instanceof ReferenceError) {
-      return true;
-    }
-  }
- }
-runTestCase(testcase);
+});
diff --git a/test/language/expressions/assignment/11.13.1-1-6-s.js b/test/language/expressions/assignment/11.13.1-1-6-s.js
index 5a112ff1d09062e1b2b6b7d933257b254242e828..5da54baf4f42edd6199a17b8478fb3d044d78dd2 100644
--- a/test/language/expressions/assignment/11.13.1-1-6-s.js
+++ b/test/language/expressions/assignment/11.13.1-1-6-s.js
@@ -7,17 +7,9 @@ es5id: 11.13.1-1-6-s
 description: >
     simple assignment throws ReferenceError if LeftHandSide is an
     unresolvable reference (base obj undefined)
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
   
-  try {
+assert.throws(ReferenceError, function() {
     __ES3_1_test_suite_test_11_13_1_unique_id_0__.x = 42;
-    return false;
-  }
-  catch (e) {
-    return (e instanceof ReferenceError);
-  }
- }
-runTestCase(testcase);
+});
diff --git a/test/language/expressions/assignment/11.13.1-1-s.js b/test/language/expressions/assignment/11.13.1-1-s.js
index 9c8f508be07525bb545aa26ef4ca49a8e36a6c03..380814a0035ac183844b4be186b6a522b71b007a 100644
--- a/test/language/expressions/assignment/11.13.1-1-s.js
+++ b/test/language/expressions/assignment/11.13.1-1-s.js
@@ -8,10 +8,8 @@ description: >
     reference to a data property with the attribute value
     {[[Writable]]:false} under strict mode
 flags: [onlyStrict]
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
         var obj = {};
         Object.defineProperty(obj, "prop", {
             value: 10,
@@ -19,12 +17,7 @@ function testcase() {
             enumerable: true,
             configurable: true
         });
-
-        try {
+assert.throws(TypeError, function() {
             obj.prop = 20;
-            return false;
-        } catch (e) {
-            return e instanceof TypeError && obj.prop === 10;
-        }
-    }
-runTestCase(testcase);
+});
+assert.sameValue(obj.prop, 10, 'obj.prop');
diff --git a/test/language/expressions/assignment/11.13.1-2-s.js b/test/language/expressions/assignment/11.13.1-2-s.js
index ee005def69f8892cbd193a9e476f96e3e7d152f5..f0869cb85030799984262c9bec8cfc62a0b2d691 100644
--- a/test/language/expressions/assignment/11.13.1-2-s.js
+++ b/test/language/expressions/assignment/11.13.1-2-s.js
@@ -8,10 +8,8 @@ description: >
     reference to an accessor property with the attribute value
     {[[Set]]:undefined} under strict mode
 flags: [onlyStrict]
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
         var obj = {};
         Object.defineProperty(obj, "prop", {
             get: function () {
@@ -21,12 +19,7 @@ function testcase() {
             enumerable: true,
             configurable: true
         });
-
-        try {
+assert.throws(TypeError, function() {
             obj.prop = 20;
-            return false;
-        } catch (e) {
-            return e instanceof TypeError && obj.prop === 11;
-        }
-    }
-runTestCase(testcase);
+});
+assert.sameValue(obj.prop, 11, 'obj.prop');
diff --git a/test/language/expressions/assignment/11.13.1-3-s.js b/test/language/expressions/assignment/11.13.1-3-s.js
index 4f3e5e8a322d6332b62946db7afe5c557528efa4..deee7fc8d1fe49b8302bbcb12ad0a83583d77f35 100644
--- a/test/language/expressions/assignment/11.13.1-3-s.js
+++ b/test/language/expressions/assignment/11.13.1-3-s.js
@@ -9,18 +9,10 @@ description: >
     [[Extensible]] internal property has the value false under strict
     mode
 flags: [onlyStrict]
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
         var obj = {};
         Object.preventExtensions(obj);
-
-        try {
+assert.throws(TypeError, function() {
             obj.len = 10;
-            return false;
-        } catch (e) {
-            return e instanceof TypeError;
-        }
-    }
-runTestCase(testcase);
+});
diff --git a/test/language/expressions/assignment/11.13.1-4-14-s.js b/test/language/expressions/assignment/11.13.1-4-14-s.js
index 6193954958a35e95eedfa85fb739f75ddcc01a20..ee6899aaff67f20251907c9742c4f3a0adb0fda4 100644
--- a/test/language/expressions/assignment/11.13.1-4-14-s.js
+++ b/test/language/expressions/assignment/11.13.1-4-14-s.js
@@ -7,16 +7,9 @@ description: >
     simple assignment throws TypeError if LeftHandSide is a readonly
     property in strict mode (Number.MAX_VALUE)
 flags: [onlyStrict]
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
-  try {
+
+assert.throws(TypeError, function() {
     Number.MAX_VALUE = 42;
-    return false;
-  }
-  catch (e) {
-    return (e instanceof TypeError);
-  }
- }
-runTestCase(testcase);
+});
diff --git a/test/language/expressions/assignment/11.13.1-4-3-s.js b/test/language/expressions/assignment/11.13.1-4-3-s.js
index 22d88388bb65ea0b5aed81e09cdc765731bec455..20d175c7d77deebe38d37a60e0755a5333bf857a 100644
--- a/test/language/expressions/assignment/11.13.1-4-3-s.js
+++ b/test/language/expressions/assignment/11.13.1-4-3-s.js
@@ -7,18 +7,10 @@ description: >
     simple assignment throws TypeError if LeftHandSide is a readonly
     property in strict mode (Global.Infinity)
 flags: [onlyStrict]
-includes:
-    - runTestCase.js
-    - fnGlobalObject.js
+includes: [fnGlobalObject.js]
 ---*/
 
-function testcase() {
-    try {
+
+assert.throws(TypeError, function() {
       fnGlobalObject().Infinity = 42;
-      return false;
-    }
-    catch (e) {
-      return (e instanceof TypeError);
-    }
- }
-runTestCase(testcase);
+});
diff --git a/test/language/expressions/assignment/11.13.1-4-30-s.js b/test/language/expressions/assignment/11.13.1-4-30-s.js
index 242f96d10af4d67e82d1a55cf1b521b6e96ef3a6..70cdcd0af6b5901821a43552d98ebc8d0bed54f3 100644
--- a/test/language/expressions/assignment/11.13.1-4-30-s.js
+++ b/test/language/expressions/assignment/11.13.1-4-30-s.js
@@ -8,16 +8,10 @@ description: >
     appears as the LeftHandSideExpression (PrimaryExpression) of
     simple assignment(=) under strict mode
 flags: [onlyStrict]
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
         var blah = eval;
-        try {
+assert.throws(SyntaxError, function() {
             eval("(eval) = 20;");
-            return false;
-        } catch (e) {
-            return e instanceof SyntaxError && blah === eval;
-        }
-}
-runTestCase(testcase);
+});
+assert.sameValue(blah, eval, 'blah');
diff --git a/test/language/expressions/assignment/11.13.1-4-6-s.js b/test/language/expressions/assignment/11.13.1-4-6-s.js
index bd35f51f4f8ce06acfe75bf7a43ba2ae4219b0f1..7778e254d6a09550fda08a076ae542b89bfe408f 100644
--- a/test/language/expressions/assignment/11.13.1-4-6-s.js
+++ b/test/language/expressions/assignment/11.13.1-4-6-s.js
@@ -7,16 +7,9 @@ description: >
     simple assignment throws TypeError if LeftHandSide is a readonly
     property in strict mode (Function.length)
 flags: [onlyStrict]
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
-  try {
+
+assert.throws(TypeError, function() {
     Function.length = 42;
-    return false;
-  }
-  catch (e) {
-    return (e instanceof TypeError);
-  }
- }
-runTestCase(testcase);
+});
diff --git a/test/language/expressions/assignment/8.14.4-8-b_2.js b/test/language/expressions/assignment/8.14.4-8-b_2.js
index 61c1f3f402e020a2368017727f33fe21ac545997..1223afeab59e77372b4b2875ee543a6e951d9ec6 100644
--- a/test/language/expressions/assignment/8.14.4-8-b_2.js
+++ b/test/language/expressions/assignment/8.14.4-8-b_2.js
@@ -5,19 +5,13 @@
 es5id: 8.14.4-8-b_2
 description: Non-writable property on a prototype written to in strict mode.
 flags: [onlyStrict]
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
     function foo() {};
     Object.defineProperty(foo.prototype, "bar", {value: "unwritable"}); 
     
     var o = new foo(); 
-    try {
-        o.bar = "overridden"; 
-        return false;
-    } catch(e) {
-        return (e instanceof TypeError) && (o.bar==="unwritable");
-    }
-}
-runTestCase(testcase);
+assert.throws(TypeError, function() {
+        o.bar = "overridden";
+});
+assert.sameValue(o.bar, "unwritable", 'o.bar');
diff --git a/test/language/expressions/call/11.2.3-3_1.js b/test/language/expressions/call/11.2.3-3_1.js
index 4ae4848421c7e83a0d4e6d2677f217c55b5b3e63..e3299dc9ed8530811b03f710516f4db696d6b6cc 100644
--- a/test/language/expressions/call/11.2.3-3_1.js
+++ b/test/language/expressions/call/11.2.3-3_1.js
@@ -6,19 +6,14 @@ es5id: 11.2.3-3_1
 description: >
     Call arguments are evaluated before the check is made to see if
     the object is actually callable (FunctionDeclaration)
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
     var fooCalled = false;
     function foo(){ fooCalled = true; } 
     
     var o = { }; 
-    try {
+assert.throws(TypeError, function() {
         o.bar( foo() );
         $ERROR("o.bar does not exist!");
-    } catch(e) {
-        return (e instanceof TypeError) && (fooCalled===true);
-    }
-}
-runTestCase(testcase);
+});
+assert.sameValue(fooCalled, true, 'fooCalled');
diff --git a/test/language/expressions/call/11.2.3-3_2.js b/test/language/expressions/call/11.2.3-3_2.js
index 0de02c677e8266a3dded0eee212c5eb87a98c4e7..d99eedfcb15d1b934665c01956ae4b5545d32763 100644
--- a/test/language/expressions/call/11.2.3-3_2.js
+++ b/test/language/expressions/call/11.2.3-3_2.js
@@ -6,19 +6,14 @@ es5id: 11.2.3-3_2
 description: >
     Call arguments are evaluated before the check is made to see if
     the object is actually callable (FunctionExpression)
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
     var fooCalled = false;
     var foo = function (){ fooCalled = true; } 
     
     var o = { }; 
-    try {
+assert.throws(TypeError, function() {
         o.bar( foo() );
         $ERROR("o.bar does not exist!");
-    } catch(e) {
-        return (e instanceof TypeError) && (fooCalled===true);
-    }
-}
-runTestCase(testcase);
+});
+assert.sameValue(fooCalled, true, 'fooCalled');
diff --git a/test/language/expressions/call/11.2.3-3_3.js b/test/language/expressions/call/11.2.3-3_3.js
index ef652bbd93821abb325ad16f08cba549bdb90f72..25d26bc709e43e61c23d6a5bec29f89bd210aba4 100644
--- a/test/language/expressions/call/11.2.3-3_3.js
+++ b/test/language/expressions/call/11.2.3-3_3.js
@@ -6,19 +6,14 @@ es5id: 11.2.3-3_3
 description: >
     Call arguments are not evaluated before the check is made to see
     if the object is actually callable (undefined member)
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
     var fooCalled = false;
     function foo(){ fooCalled = true; } 
     
     var o = { }; 
-    try {
+assert.throws(TypeError, function() {
         o.bar.gar( foo() );
         $ERROR("o.bar does not exist!");
-    } catch(e) {
-        return (e instanceof TypeError) && (fooCalled===false);
-    }
-}
-runTestCase(testcase);
+});
+assert.sameValue(fooCalled, false, 'fooCalled');
diff --git a/test/language/expressions/call/11.2.3-3_4.js b/test/language/expressions/call/11.2.3-3_4.js
index 99a7c543e83304655e5118c73da71ef42e5d19a0..3a01ef550a46160aa725dbed294df55371b438b3 100644
--- a/test/language/expressions/call/11.2.3-3_4.js
+++ b/test/language/expressions/call/11.2.3-3_4.js
@@ -6,21 +6,18 @@ es5id: 11.2.3-3_4
 description: >
     Call arguments are evaluated before the check is made to see if
     the object is actually callable (property)
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
     var fooCalled = false;
     function foo(){ fooCalled = true; } 
     
     var o = { }; 
     Object.defineProperty(o, "bar", {get: function()  {this.barGetter = true; return 42;}, 
                                      set: function(x) {this.barSetter = true; }});
-    try {
+assert.throws(TypeError, function() {
         o.bar( foo() );
         $ERROR("o.bar does not exist!");
-    } catch(e) {
-        return (e instanceof TypeError) && (fooCalled===true) && (o.barGetter===true) && (o.barSetter===undefined);
-    }
-}
-runTestCase(testcase);
+});
+assert.sameValue(fooCalled, true, 'fooCalled');
+assert.sameValue(o.barGetter, true, 'o.barGetter');
+assert.sameValue(o.barSetter, undefined, 'o.barSetter');
diff --git a/test/language/expressions/call/11.2.3-3_5.js b/test/language/expressions/call/11.2.3-3_5.js
index f3e58fa1b4bf3ce2b52ae0bfed1a547cabb85785..c8efb1a0bf6218f0e2f1de1a949e7745b46785af 100644
--- a/test/language/expressions/call/11.2.3-3_5.js
+++ b/test/language/expressions/call/11.2.3-3_5.js
@@ -6,19 +6,14 @@ es5id: 11.2.3-3_5
 description: >
     Call arguments are evaluated before the check is made to see if
     the object is actually callable (eval'ed)
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
     var fooCalled = false;
     function foo(){ fooCalled = true; } 
     
     var o = { }; 
-    try {
+assert.throws(TypeError, function() {
         eval("o.bar( foo() );");
         $ERROR("o.bar does not exist!");
-    } catch(e) {
-        return (e instanceof TypeError) && (fooCalled===true);
-    }
-}
-runTestCase(testcase);
+});
+assert.sameValue(fooCalled, true, 'fooCalled');
diff --git a/test/language/expressions/call/11.2.3-3_6.js b/test/language/expressions/call/11.2.3-3_6.js
index b302abac7151b5334cd3546e284828ca91e31412..18b59596d38dec6e3bbf9c60aaa54a92fe89fedc 100644
--- a/test/language/expressions/call/11.2.3-3_6.js
+++ b/test/language/expressions/call/11.2.3-3_6.js
@@ -6,18 +6,14 @@ es5id: 11.2.3-3_6
 description: >
     Call arguments are evaluated before the check is made to see if
     the object is actually callable (getter called)
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
     var o = { }; 
     Object.defineProperty(o, "bar", {get: function()  {this.barGetter = true; return 42;}, 
                                      set: function(x) {this.barSetter = true; }});
-    try {
+assert.throws(TypeError, function() {
         o.foo( o.bar );
         $ERROR("o.foo does not exist!");
-    } catch(e) {
-        return (e instanceof TypeError) && (o.barGetter===true) && (o.barSetter===undefined);
-    }
-}
-runTestCase(testcase);
+});
+assert.sameValue(o.barGetter, true, 'o.barGetter');
+assert.sameValue(o.barSetter, undefined, 'o.barSetter');
diff --git a/test/language/expressions/call/11.2.3-3_7.js b/test/language/expressions/call/11.2.3-3_7.js
index 318413d92743d623a17b78e02deb5c226e40ac44..b56ca7e6f4ebdc4b1ff0769ebdabb20794c25508 100644
--- a/test/language/expressions/call/11.2.3-3_7.js
+++ b/test/language/expressions/call/11.2.3-3_7.js
@@ -6,18 +6,14 @@ es5id: 11.2.3-3_7
 description: >
     Call arguments are evaluated before the check is made to see if
     the object is actually callable (getter called as indexed property)
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
     var o = { }; 
     Object.defineProperty(o, "bar", {get: function()  {this.barGetter = true; return 42;}, 
                                      set: function(x) {this.barSetter = true; }});
-    try {
+assert.throws(TypeError, function() {
         o.foo( o["bar"] );
         $ERROR("o.foo does not exist!");
-    } catch(e) {
-        return (e instanceof TypeError) && (o.barGetter===true) && (o.barSetter===undefined);
-    }
-}
-runTestCase(testcase);
+});
+assert.sameValue(o.barGetter, true, 'o.barGetter');
+assert.sameValue(o.barSetter, undefined, 'o.barSetter');
diff --git a/test/language/expressions/call/11.2.3-3_8.js b/test/language/expressions/call/11.2.3-3_8.js
index b0f4677b90b0a9e987e2645a00dea580a32f7894..bc35ec06c8a2ac9518586015a0ab9ad798a19218 100644
--- a/test/language/expressions/call/11.2.3-3_8.js
+++ b/test/language/expressions/call/11.2.3-3_8.js
@@ -7,19 +7,12 @@ description: >
     Call arguments are evaluated before the check is made to see if
     the object is actually callable (global object)
 flags: [noStrict]
-includes:
-    - runTestCase.js
 ---*/
 
-function testcase() {
     var fooCalled = false;
     function foo(){ fooCalled = true; } 
-    
-    try {
+assert.throws(TypeError, function() {
         this.bar( foo() );
         $ERROR("this.bar does not exist!");
-    } catch(e) {
-        return (e instanceof TypeError) && (fooCalled===true);
-    }
-}
-runTestCase(testcase);
+});
+assert.sameValue(fooCalled, true, 'fooCalled');
diff --git a/test/language/expressions/compound-assignment/11.13.2-1-s.js b/test/language/expressions/compound-assignment/11.13.2-1-s.js
index 159b17bfc9b2738dd9bd8e8f5cfc8d1eedd4d53d..446461885f9d6446f37357883ea8375cf045548d 100644
--- a/test/language/expressions/compound-assignment/11.13.2-1-s.js
+++ b/test/language/expressions/compound-assignment/11.13.2-1-s.js
@@ -6,15 +6,9 @@ es5id: 11.13.2-1-s
 description: >
     ReferenceError is thrown if the LeftHandSideExpression of a Compound
     Assignment operator(*=) evaluates to an unresolvable reference
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
-        try {
+
+assert.throws(ReferenceError, function() {
             eval("_11_13_2_1 *= 1;");
-            return false;
-        } catch (e) {
-            return e instanceof ReferenceError;
-        }
-    }
-runTestCase(testcase);
+});
diff --git a/test/language/expressions/compound-assignment/11.13.2-10-s.js b/test/language/expressions/compound-assignment/11.13.2-10-s.js
index b5726c941eab0f08dfee66276ec278e301486f04..1e652ce26f30944126764e40c19ff94a93b3ae73 100644
--- a/test/language/expressions/compound-assignment/11.13.2-10-s.js
+++ b/test/language/expressions/compound-assignment/11.13.2-10-s.js
@@ -6,15 +6,9 @@ es5id: 11.13.2-10-s
 description: >
     ReferenceError is thrown if the LeftHandSideExpression of a Compound
     Assignment operator(^=) evaluates to an unresolvable reference
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
-        try {
+
+assert.throws(ReferenceError, function() {
             eval("_11_13_2_10 ^= 1;");
-            return false;
-        } catch (e) {
-            return e instanceof ReferenceError;
-        }
-    }
-runTestCase(testcase);
+});
diff --git a/test/language/expressions/compound-assignment/11.13.2-11-s.js b/test/language/expressions/compound-assignment/11.13.2-11-s.js
index a55be9a4cc457e6f84529bbc75ced5abed8a3b88..73286235122e77b0b1fce5b64a3552d7cfb114e9 100644
--- a/test/language/expressions/compound-assignment/11.13.2-11-s.js
+++ b/test/language/expressions/compound-assignment/11.13.2-11-s.js
@@ -6,15 +6,9 @@ es5id: 11.13.2-11-s
 description: >
     ReferenceError is thrown if the LeftHandSideExpression of a Compound
     Assignment operator(|=) evaluates to an unresolvable reference
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
-        try {
+
+assert.throws(ReferenceError, function() {
             eval("_11_13_2_11 |= 1;");
-            return false;
-        } catch (e) {
-            return e instanceof ReferenceError;
-        }
-    }
-runTestCase(testcase);
+});
diff --git a/test/language/expressions/compound-assignment/11.13.2-2-s.js b/test/language/expressions/compound-assignment/11.13.2-2-s.js
index 78ea77f01c6c328e2ab24b0e780139ddcd829242..1a66d33b12a258e3bfd1c3099a3baba3d5b91f6c 100644
--- a/test/language/expressions/compound-assignment/11.13.2-2-s.js
+++ b/test/language/expressions/compound-assignment/11.13.2-2-s.js
@@ -6,15 +6,9 @@ es5id: 11.13.2-2-s
 description: >
     Strict Mode - ReferenceError is thrown if the LeftHandSideExpression of a
     Compound Assignment operator(/=) evaluates to an unresolvable reference
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
-        try {
+
+assert.throws(ReferenceError, function() {
             eval("_11_13_2_2 /= 1;");
-            return false;
-        } catch (e) {
-            return e instanceof ReferenceError;
-        }
-    }
-runTestCase(testcase);
+});
diff --git a/test/language/expressions/compound-assignment/11.13.2-23-s.js b/test/language/expressions/compound-assignment/11.13.2-23-s.js
index 739f623725a0903cdb772bf2c948fa032aada5b1..d209ecbf51eec3c31aa2da8f8985c95de8a75f9f 100644
--- a/test/language/expressions/compound-assignment/11.13.2-23-s.js
+++ b/test/language/expressions/compound-assignment/11.13.2-23-s.js
@@ -8,10 +8,8 @@ description: >
     Compound Assignment operator(*=) is a reference to a data property
     with the attribute value {[[Writable]]:false}
 flags: [onlyStrict]
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
         var obj = {};
         Object.defineProperty(obj, "prop", {
             value: 10,
@@ -19,12 +17,7 @@ function testcase() {
             enumerable: true,
             configurable: true
         });
-
-        try {
+assert.throws(TypeError, function() {
             obj.prop *= 20;
-            return false;
-        } catch (e) {
-            return e instanceof TypeError && obj.prop === 10;
-        }
-    }
-runTestCase(testcase);
+});
+assert.sameValue(obj.prop, 10, 'obj.prop');
diff --git a/test/language/expressions/compound-assignment/11.13.2-24-s.js b/test/language/expressions/compound-assignment/11.13.2-24-s.js
index a4042bc4f8a43d8b0548a8968610aa2399ef5d4d..42bec67e91f75f72e97d585f8fd746093342d2a4 100644
--- a/test/language/expressions/compound-assignment/11.13.2-24-s.js
+++ b/test/language/expressions/compound-assignment/11.13.2-24-s.js
@@ -8,10 +8,8 @@ description: >
     Compound Assignment operator(/=) is a reference to a data property
     with the attribute value {[[Writable]]:false}
 flags: [onlyStrict]
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
         var obj = {};
         Object.defineProperty(obj, "prop", {
             value: 10,
@@ -19,12 +17,7 @@ function testcase() {
             enumerable: true,
             configurable: true
         });
-
-        try {
+assert.throws(TypeError, function() {
             obj.prop /= 20;
-            return false;
-        } catch (e) {
-            return e instanceof TypeError && obj.prop === 10;
-        }
-    }
-runTestCase(testcase);
+});
+assert.sameValue(obj.prop, 10, 'obj.prop');
diff --git a/test/language/expressions/compound-assignment/11.13.2-25-s.js b/test/language/expressions/compound-assignment/11.13.2-25-s.js
index 3a0955547fbaddd5af3bcfad7bfebaf8a6447794..f3c4b11c3aa356c82082f5bcb6757b230ed2f871 100644
--- a/test/language/expressions/compound-assignment/11.13.2-25-s.js
+++ b/test/language/expressions/compound-assignment/11.13.2-25-s.js
@@ -8,10 +8,8 @@ description: >
     Compound Assignment operator(%=) is a reference to a data property
     with the attribute value {[[Writable]]:false}
 flags: [onlyStrict]
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
         var obj = {};
         Object.defineProperty(obj, "prop", {
             value: 10,
@@ -19,12 +17,7 @@ function testcase() {
             enumerable: true,
             configurable: true
         });
-
-        try {
+assert.throws(TypeError, function() {
             obj.prop %= 20;
-            return false;
-        } catch (e) {
-            return e instanceof TypeError && obj.prop === 10;
-        }
-    }
-runTestCase(testcase);
+});
+assert.sameValue(obj.prop, 10, 'obj.prop');
diff --git a/test/language/expressions/compound-assignment/11.13.2-26-s.js b/test/language/expressions/compound-assignment/11.13.2-26-s.js
index 53fae86891da4cd49ea26d07bf5119c27e0ef349..bdd0e68a3163181f7c844c4e2dde9077a497814b 100644
--- a/test/language/expressions/compound-assignment/11.13.2-26-s.js
+++ b/test/language/expressions/compound-assignment/11.13.2-26-s.js
@@ -8,10 +8,8 @@ description: >
     Compound Assignment operator(+=) is a reference to a data property
     with the attribute value {[[Writable]]:false}
 flags: [onlyStrict]
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
         var obj = {};
         Object.defineProperty(obj, "prop", {
             value: 10,
@@ -19,12 +17,7 @@ function testcase() {
             enumerable: true,
             configurable: true
         });
-
-        try {
+assert.throws(TypeError, function() {
             obj.prop += 20;
-            return false;
-        } catch (e) {
-            return e instanceof TypeError && obj.prop === 10;
-        }
-    }
-runTestCase(testcase);
+});
+assert.sameValue(obj.prop, 10, 'obj.prop');
diff --git a/test/language/expressions/compound-assignment/11.13.2-27-s.js b/test/language/expressions/compound-assignment/11.13.2-27-s.js
index d4d92cf0be6bda4671e1dca57b8ca417b660b001..f87a5a2dfdd66dff2abd318c8628c22b1733d927 100644
--- a/test/language/expressions/compound-assignment/11.13.2-27-s.js
+++ b/test/language/expressions/compound-assignment/11.13.2-27-s.js
@@ -8,10 +8,8 @@ description: >
     Compound Assignment operator(-=) is a reference to a data property
     with the attribute value {[[Writable]]:false}
 flags: [onlyStrict]
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
         var obj = {};
         Object.defineProperty(obj, "prop", {
             value: 10,
@@ -19,12 +17,7 @@ function testcase() {
             enumerable: true,
             configurable: true
         });
-
-        try {
+assert.throws(TypeError, function() {
             obj.prop -= 20;
-            return false;
-        } catch (e) {
-            return e instanceof TypeError && obj.prop === 10;
-        }
-    }
-runTestCase(testcase);
+});
+assert.sameValue(obj.prop, 10, 'obj.prop');
diff --git a/test/language/expressions/compound-assignment/11.13.2-28-s.js b/test/language/expressions/compound-assignment/11.13.2-28-s.js
index d65fcbefcf041d082b561d93caa15dab2951b7d2..3bf144daeb0b89637364255daf104cc673574934 100644
--- a/test/language/expressions/compound-assignment/11.13.2-28-s.js
+++ b/test/language/expressions/compound-assignment/11.13.2-28-s.js
@@ -8,10 +8,8 @@ description: >
     Compound Assignment operator(<<=) is a reference to a data
     property with the attribute value {[[Writable]]:false}
 flags: [onlyStrict]
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
         var obj = {};
         Object.defineProperty(obj, "prop", {
             value: 10,
@@ -19,12 +17,7 @@ function testcase() {
             enumerable: true,
             configurable: true
         });
-
-        try {
+assert.throws(TypeError, function() {
             obj.prop <<= 20;
-            return false;
-        } catch (e) {
-            return e instanceof TypeError && obj.prop === 10;
-        }
-    }
-runTestCase(testcase);
+});
+assert.sameValue(obj.prop, 10, 'obj.prop');
diff --git a/test/language/expressions/compound-assignment/11.13.2-29-s.js b/test/language/expressions/compound-assignment/11.13.2-29-s.js
index 8974a1615f01288a4068bf98bf32d11a89e68ee0..ed8091fcfedc4da6f81b1d02f792897093321887 100644
--- a/test/language/expressions/compound-assignment/11.13.2-29-s.js
+++ b/test/language/expressions/compound-assignment/11.13.2-29-s.js
@@ -8,10 +8,8 @@ description: >
     Compound Assignment operator(>>=) is a reference to a data
     property with the attribute value {[[Writable]]:false}
 flags: [onlyStrict]
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
         var obj = {};
         Object.defineProperty(obj, "prop", {
             value: 10,
@@ -19,12 +17,7 @@ function testcase() {
             enumerable: true,
             configurable: true
         });
-
-        try {
+assert.throws(TypeError, function() {
             obj.prop >>= 20;
-            return false;
-        } catch (e) {
-            return e instanceof TypeError && obj.prop === 10;
-        }
-    }
-runTestCase(testcase);
+});
+assert.sameValue(obj.prop, 10, 'obj.prop');
diff --git a/test/language/expressions/compound-assignment/11.13.2-3-s.js b/test/language/expressions/compound-assignment/11.13.2-3-s.js
index 8eb11c9d05c813699cef1669c7f697b21c256c01..93b23a3ccdd41c521fef7914419b9c6e9c23c93c 100644
--- a/test/language/expressions/compound-assignment/11.13.2-3-s.js
+++ b/test/language/expressions/compound-assignment/11.13.2-3-s.js
@@ -8,15 +8,9 @@ description: >
     LeftHandSideExpression of a Compound Assignment operator(%=)
     evaluates to an unresolvable reference
 flags: [onlyStrict]
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
-        try {
+
+assert.throws(ReferenceError, function() {
             eval("_11_13_2_3 %= 1;");
-            return false;
-        } catch (e) {
-            return e instanceof ReferenceError;
-        }
-    }
-runTestCase(testcase);
+});
diff --git a/test/language/expressions/compound-assignment/11.13.2-30-s.js b/test/language/expressions/compound-assignment/11.13.2-30-s.js
index ab927ad0d0a39e022522787fb1a093adbf7e0381..26f120d3f5cf268de1eb004c3b00c8fa0466ba4f 100644
--- a/test/language/expressions/compound-assignment/11.13.2-30-s.js
+++ b/test/language/expressions/compound-assignment/11.13.2-30-s.js
@@ -8,10 +8,8 @@ description: >
     Compound Assignment operator(>>>=) is a reference to a data
     property with the attribute value {[[Writable]]:false}
 flags: [onlyStrict]
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
         var obj = {};
         Object.defineProperty(obj, "prop", {
             value: 10,
@@ -19,12 +17,7 @@ function testcase() {
             enumerable: true,
             configurable: true
         });
-
-        try {
+assert.throws(TypeError, function() {
             obj.prop >>>= 20;
-            return false;
-        } catch (e) {
-            return e instanceof TypeError && obj.prop === 10;
-        }
-    }
-runTestCase(testcase);
+});
+assert.sameValue(obj.prop, 10, 'obj.prop');
diff --git a/test/language/expressions/compound-assignment/11.13.2-31-s.js b/test/language/expressions/compound-assignment/11.13.2-31-s.js
index 878ed63e3b689fc55f05bfc7be1bf14989daf92f..0d6786620878e27ab00d3c0d80e1d20b624d2e6a 100644
--- a/test/language/expressions/compound-assignment/11.13.2-31-s.js
+++ b/test/language/expressions/compound-assignment/11.13.2-31-s.js
@@ -8,10 +8,8 @@ description: >
     Compound Assignment operator(&=) is a reference to a data property
     with the attribute value {[[Writable]]:false}
 flags: [onlyStrict]
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
         var obj = {};
         Object.defineProperty(obj, "prop", {
             value: 10,
@@ -19,12 +17,7 @@ function testcase() {
             enumerable: true,
             configurable: true
         });
-
-        try {
+assert.throws(TypeError, function() {
             obj.prop &= 20;
-            return false;
-        } catch (e) {
-            return e instanceof TypeError && obj.prop === 10;
-        }
-    }
-runTestCase(testcase);
+});
+assert.sameValue(obj.prop, 10, 'obj.prop');
diff --git a/test/language/expressions/compound-assignment/11.13.2-32-s.js b/test/language/expressions/compound-assignment/11.13.2-32-s.js
index 96f1ad9df29b20d206e9eb4bf4f1271f4eb605dd..8182307d6088a9c453dac84ee7a8987208565488 100644
--- a/test/language/expressions/compound-assignment/11.13.2-32-s.js
+++ b/test/language/expressions/compound-assignment/11.13.2-32-s.js
@@ -8,10 +8,8 @@ description: >
     Compound Assignment operator(^=) is a reference to a data property
     with the attribute value {[[Writable]]:false}
 flags: [onlyStrict]
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
         var obj = {};
         Object.defineProperty(obj, "prop", {
             value: 10,
@@ -19,12 +17,7 @@ function testcase() {
             enumerable: true,
             configurable: true
         });
-
-        try {
+assert.throws(TypeError, function() {
             obj.prop ^= 20;
-            return false;
-        } catch (e) {
-            return e instanceof TypeError && obj.prop === 10;
-        }
-    }
-runTestCase(testcase);
+});
+assert.sameValue(obj.prop, 10, 'obj.prop');
diff --git a/test/language/expressions/compound-assignment/11.13.2-33-s.js b/test/language/expressions/compound-assignment/11.13.2-33-s.js
index f1aa5b365b9913a65c78456721be3468ba6250b9..c0883a6e5665b1303e40520ee04b011e8c1b66e3 100644
--- a/test/language/expressions/compound-assignment/11.13.2-33-s.js
+++ b/test/language/expressions/compound-assignment/11.13.2-33-s.js
@@ -8,10 +8,8 @@ description: >
     Compound Assignment operator(|=) is a reference to a data property
     with the attribute value {[[Writable]]:false}
 flags: [onlyStrict]
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
         var obj = {};
         Object.defineProperty(obj, "prop", {
             value: 10,
@@ -19,12 +17,7 @@ function testcase() {
             enumerable: true,
             configurable: true
         });
-
-        try {
+assert.throws(TypeError, function() {
             obj.prop |= 20;
-            return false;
-        } catch (e) {
-            return e instanceof TypeError && obj.prop === 10;
-        }
-    }
-runTestCase(testcase);
+});
+assert.sameValue(obj.prop, 10, 'obj.prop');
diff --git a/test/language/expressions/compound-assignment/11.13.2-34-s.js b/test/language/expressions/compound-assignment/11.13.2-34-s.js
index 5ae15b667497dfc26741e6e053263234f95eef37..b4becc6d0b44bbf244a89a93b98adc9d7fc37b67 100644
--- a/test/language/expressions/compound-assignment/11.13.2-34-s.js
+++ b/test/language/expressions/compound-assignment/11.13.2-34-s.js
@@ -8,10 +8,8 @@ description: >
     Compound Assignment operator(*=) is a reference to an accessor
     property with the attribute value {[[Set]]:undefined}
 flags: [onlyStrict]
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
         var obj = {};
         Object.defineProperty(obj, "prop", {
             get: function () {
@@ -21,12 +19,7 @@ function testcase() {
             enumerable: true,
             configurable: true
         });
-
-        try {
+assert.throws(TypeError, function() {
             obj.prop *= 20;
-            return false;
-        } catch (e) {
-            return e instanceof TypeError && obj.prop === 11;
-        }
-    }
-runTestCase(testcase);
+});
+assert.sameValue(obj.prop, 11, 'obj.prop');
diff --git a/test/language/expressions/compound-assignment/11.13.2-35-s.js b/test/language/expressions/compound-assignment/11.13.2-35-s.js
index 78aec217b4a0527d3f9970f2d152b54aafeb7944..81829ff160113b62f35cb1e5a69bc77a548277a6 100644
--- a/test/language/expressions/compound-assignment/11.13.2-35-s.js
+++ b/test/language/expressions/compound-assignment/11.13.2-35-s.js
@@ -8,10 +8,8 @@ description: >
     Compound Assignment operator(/=) is a reference to an accessor
     property with the attribute value {[[Set]]:undefined}
 flags: [onlyStrict]
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
         var obj = {};
         Object.defineProperty(obj, "prop", {
             get: function () {
@@ -21,12 +19,7 @@ function testcase() {
             enumerable: true,
             configurable: true
         });
-
-        try {
+assert.throws(TypeError, function() {
             obj.prop /= 20;
-            return false;
-        } catch (e) {
-            return e instanceof TypeError && obj.prop === 11;
-        }
-    }
-runTestCase(testcase);
+});
+assert.sameValue(obj.prop, 11, 'obj.prop');
diff --git a/test/language/expressions/compound-assignment/11.13.2-36-s.js b/test/language/expressions/compound-assignment/11.13.2-36-s.js
index 3d771cff676bf09ef8f85c69c1469da34b50e3d4..7eb331477ca0ca99080bd66a446ba503117eec00 100644
--- a/test/language/expressions/compound-assignment/11.13.2-36-s.js
+++ b/test/language/expressions/compound-assignment/11.13.2-36-s.js
@@ -8,10 +8,8 @@ description: >
     Compound Assignment operator(%=) is a reference to an accessor
     property with the attribute value {[[Set]]:undefined}
 flags: [onlyStrict]
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
         var obj = {};
         Object.defineProperty(obj, "prop", {
             get: function () {
@@ -21,12 +19,7 @@ function testcase() {
             enumerable: true,
             configurable: true
         });
-
-        try {
+assert.throws(TypeError, function() {
             obj.prop %= 20;
-            return false;
-        } catch (e) {
-            return e instanceof TypeError && obj.prop === 11;
-        }
-    }
-runTestCase(testcase);
+});
+assert.sameValue(obj.prop, 11, 'obj.prop');
diff --git a/test/language/expressions/compound-assignment/11.13.2-37-s.js b/test/language/expressions/compound-assignment/11.13.2-37-s.js
index c21c84a7b01d2d73611faacfd0951580ac42f3f6..4d8aa3b8f3676f8744247f375531aeb3012cf854 100644
--- a/test/language/expressions/compound-assignment/11.13.2-37-s.js
+++ b/test/language/expressions/compound-assignment/11.13.2-37-s.js
@@ -8,10 +8,8 @@ description: >
     Compound Assignment operator(+=) is a reference to an accessor
     property with the attribute value {[[Set]]:undefined}
 flags: [onlyStrict]
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
         var obj = {};
         Object.defineProperty(obj, "prop", {
             get: function () {
@@ -21,12 +19,7 @@ function testcase() {
             enumerable: true,
             configurable: true
         });
-
-        try {
+assert.throws(TypeError, function() {
             obj.prop += 20;
-            return false;
-        } catch (e) {
-            return e instanceof TypeError && obj.prop === 11;
-        }
-    }
-runTestCase(testcase);
+});
+assert.sameValue(obj.prop, 11, 'obj.prop');
diff --git a/test/language/expressions/compound-assignment/11.13.2-38-s.js b/test/language/expressions/compound-assignment/11.13.2-38-s.js
index 6e637599aa08c14862c6ff6bb46e5a2cfa5919e3..9b39dca4fb59d0af6f56e2aafdd541853ffa160a 100644
--- a/test/language/expressions/compound-assignment/11.13.2-38-s.js
+++ b/test/language/expressions/compound-assignment/11.13.2-38-s.js
@@ -8,10 +8,8 @@ description: >
     Compound Assignment operator(-=) is a reference to an accessor
     property with the attribute value {[[Set]]:undefined}
 flags: [onlyStrict]
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
         var obj = {};
         Object.defineProperty(obj, "prop", {
             get: function () {
@@ -21,12 +19,7 @@ function testcase() {
             enumerable: true,
             configurable: true
         });
-
-        try {
+assert.throws(TypeError, function() {
             obj.prop -= 20;
-            return false;
-        } catch (e) {
-            return e instanceof TypeError && obj.prop === 11;
-        }
-    }
-runTestCase(testcase);
+});
+assert.sameValue(obj.prop, 11, 'obj.prop');
diff --git a/test/language/expressions/compound-assignment/11.13.2-39-s.js b/test/language/expressions/compound-assignment/11.13.2-39-s.js
index 3b78d131eca422d6d9eec4ae5f199311fd39abe9..ebd44377c6924339305a6e4af5e4ea04b2219b26 100644
--- a/test/language/expressions/compound-assignment/11.13.2-39-s.js
+++ b/test/language/expressions/compound-assignment/11.13.2-39-s.js
@@ -8,10 +8,8 @@ description: >
     Compound Assignment operator(<<=) is a reference to an accessor
     property with the attribute value {[[Set]]:undefined}
 flags: [onlyStrict]
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
         var obj = {};
         Object.defineProperty(obj, "prop", {
             get: function () {
@@ -21,12 +19,7 @@ function testcase() {
             enumerable: true,
             configurable: true
         });
-
-        try {
+assert.throws(TypeError, function() {
             obj.prop <<= 20;
-            return false;
-        } catch (e) {
-            return e instanceof TypeError && obj.prop === 11;
-        }
-    }
-runTestCase(testcase);
+});
+assert.sameValue(obj.prop, 11, 'obj.prop');
diff --git a/test/language/expressions/compound-assignment/11.13.2-4-s.js b/test/language/expressions/compound-assignment/11.13.2-4-s.js
index 3370fe1878088618dd472b4d55fd28b75432ddd8..aeecd46c7a0bfbf0932d9e0101798cbc204383e1 100644
--- a/test/language/expressions/compound-assignment/11.13.2-4-s.js
+++ b/test/language/expressions/compound-assignment/11.13.2-4-s.js
@@ -7,15 +7,9 @@ description: >
     Strict Mode - ReferenceError is thrown if the
     LeftHandSideExpression of a Compound Assignment operator(+=)
     evaluates to an unresolvable reference
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
-        try {
+
+assert.throws(ReferenceError, function() {
             eval("_11_13_2_4 += 1;");
-            return false;
-        } catch (e) {
-            return e instanceof ReferenceError;
-        }
-    }
-runTestCase(testcase);
+});
diff --git a/test/language/expressions/compound-assignment/11.13.2-40-s.js b/test/language/expressions/compound-assignment/11.13.2-40-s.js
index ac6cd92e6ec5846ffee953265852e53ce5ec3c80..28f57bd4c33b86e73d383f39f6cedb700018c422 100644
--- a/test/language/expressions/compound-assignment/11.13.2-40-s.js
+++ b/test/language/expressions/compound-assignment/11.13.2-40-s.js
@@ -8,10 +8,8 @@ description: >
     Compound Assignment operator(>>=) is a reference to an accessor
     property with the attribute value {[[Set]]:undefined}
 flags: [onlyStrict]
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
         var obj = {};
         Object.defineProperty(obj, "prop", {
             get: function () {
@@ -21,12 +19,7 @@ function testcase() {
             enumerable: true,
             configurable: true
         });
-
-        try {
+assert.throws(TypeError, function() {
             obj.prop >>= 20;
-            return false;
-        } catch (e) {
-            return e instanceof TypeError && obj.prop === 11;
-        }
-    }
-runTestCase(testcase);
+});
+assert.sameValue(obj.prop, 11, 'obj.prop');
diff --git a/test/language/expressions/compound-assignment/11.13.2-41-s.js b/test/language/expressions/compound-assignment/11.13.2-41-s.js
index 707032af8756e5c43333c966d21fc26c5409adb3..d5d567d97c42f4fdaec2f1e2c24c329d338e3e7b 100644
--- a/test/language/expressions/compound-assignment/11.13.2-41-s.js
+++ b/test/language/expressions/compound-assignment/11.13.2-41-s.js
@@ -8,10 +8,8 @@ description: >
     Compound Assignment operator(>>>=) is a reference to an accessor
     property with the attribute value {[[Set]]:undefined}
 flags: [onlyStrict]
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
         var obj = {};
         Object.defineProperty(obj, "prop", {
             get: function () {
@@ -21,12 +19,7 @@ function testcase() {
             enumerable: true,
             configurable: true
         });
-
-        try {
+assert.throws(TypeError, function() {
             obj.prop >>>= 20;
-            return false;
-        } catch (e) {
-            return e instanceof TypeError && obj.prop === 11;
-        }
-    }
-runTestCase(testcase);
+});
+assert.sameValue(obj.prop, 11, 'obj.prop');
diff --git a/test/language/expressions/compound-assignment/11.13.2-42-s.js b/test/language/expressions/compound-assignment/11.13.2-42-s.js
index 5d81a5130ac3efb804e55ce18a08c6af81f65c65..860fefca8d258c62ae638a1dad89272b0acc9cfe 100644
--- a/test/language/expressions/compound-assignment/11.13.2-42-s.js
+++ b/test/language/expressions/compound-assignment/11.13.2-42-s.js
@@ -8,10 +8,8 @@ description: >
     Compound Assignment operator(&=) is a reference to an accessor
     property with the attribute value {[[Set]]:undefined}
 flags: [onlyStrict]
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
         var obj = {};
         Object.defineProperty(obj, "prop", {
             get: function () {
@@ -21,12 +19,7 @@ function testcase() {
             enumerable: true,
             configurable: true
         });
-
-        try {
+assert.throws(TypeError, function() {
             obj.prop &= 20;
-            return false;
-        } catch (e) {
-            return e instanceof TypeError && obj.prop === 11;
-        }
-    }
-runTestCase(testcase);
+});
+assert.sameValue(obj.prop, 11, 'obj.prop');
diff --git a/test/language/expressions/compound-assignment/11.13.2-43-s.js b/test/language/expressions/compound-assignment/11.13.2-43-s.js
index b3c1e38b38788bd8befed2388cbe6dd19582bb7d..b25ca2ba1b4ddef9ad1f9055888f3b6dba521ebe 100644
--- a/test/language/expressions/compound-assignment/11.13.2-43-s.js
+++ b/test/language/expressions/compound-assignment/11.13.2-43-s.js
@@ -8,10 +8,8 @@ description: >
     Compound Assignment operator(^=) is a reference to an accessor
     property with the attribute value {[[Set]]:undefined}
 flags: [onlyStrict]
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
         var obj = {};
         Object.defineProperty(obj, "prop", {
             get: function () {
@@ -21,12 +19,7 @@ function testcase() {
             enumerable: true,
             configurable: true
         });
-
-        try {
+assert.throws(TypeError, function() {
             obj.prop ^= 20;
-            return false;
-        } catch (e) {
-            return e instanceof TypeError && obj.prop === 11;
-        }
-    }
-runTestCase(testcase);
+});
+assert.sameValue(obj.prop, 11, 'obj.prop');
diff --git a/test/language/expressions/compound-assignment/11.13.2-44-s.js b/test/language/expressions/compound-assignment/11.13.2-44-s.js
index 75808f9ac19f210fa98c2a09c0df2e505f753c78..9489059879a6593679f3758310f3ff17c11b7c90 100644
--- a/test/language/expressions/compound-assignment/11.13.2-44-s.js
+++ b/test/language/expressions/compound-assignment/11.13.2-44-s.js
@@ -8,10 +8,8 @@ description: >
     Compound Assignment operator(|=) is a reference of to an accessor
     property with the attribute value {[[Set]]:undefined}
 flags: [onlyStrict]
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
         var obj = {};
         Object.defineProperty(obj, "prop", {
             get: function () {
@@ -21,12 +19,7 @@ function testcase() {
             enumerable: true,
             configurable: true
         });
-
-        try {
+assert.throws(TypeError, function() {
             obj.prop |= 20;
-            return false;
-        } catch (e) {
-            return e instanceof TypeError && obj.prop === 11;
-        }
-    }
-runTestCase(testcase);
+});
+assert.sameValue(obj.prop, 11, 'obj.prop');
diff --git a/test/language/expressions/compound-assignment/11.13.2-45-s.js b/test/language/expressions/compound-assignment/11.13.2-45-s.js
index b912bfd9da403bff9c0be75a3d80eac43cf5ba38..93cfaa2490ec82c867e899a221213163b9c562fb 100644
--- a/test/language/expressions/compound-assignment/11.13.2-45-s.js
+++ b/test/language/expressions/compound-assignment/11.13.2-45-s.js
@@ -9,18 +9,10 @@ description: >
     property of an object whose [[Extensible]] internal property is
     false
 flags: [onlyStrict]
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
         var obj = {};
         Object.preventExtensions(obj);
-
-        try {
+assert.throws(TypeError, function() {
             obj.len *= 10;
-            return false;
-        } catch (e) {
-            return e instanceof TypeError;
-        }
-    }
-runTestCase(testcase);
+});
diff --git a/test/language/expressions/compound-assignment/11.13.2-46-s.js b/test/language/expressions/compound-assignment/11.13.2-46-s.js
index 81af78fd79796079e74af19ce601e4e4dfcfc999..26bc4c6e7d2f197cbcb807db3b1e2e1437bc6b17 100644
--- a/test/language/expressions/compound-assignment/11.13.2-46-s.js
+++ b/test/language/expressions/compound-assignment/11.13.2-46-s.js
@@ -9,18 +9,10 @@ description: >
     property of an object whose [[Extensible]] internal property is
     false
 flags: [onlyStrict]
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
         var obj = {};
         Object.preventExtensions(obj);
-
-        try {
+assert.throws(TypeError, function() {
             obj.len /= 10;
-            return false;
-        } catch (e) {
-            return e instanceof TypeError;
-        }
-    }
-runTestCase(testcase);
+});
diff --git a/test/language/expressions/compound-assignment/11.13.2-47-s.js b/test/language/expressions/compound-assignment/11.13.2-47-s.js
index bd195e5eb589e9eb3abc02758d0960cb78c20aed..75805899fe69000aa88790bd72ebb8897c535561 100644
--- a/test/language/expressions/compound-assignment/11.13.2-47-s.js
+++ b/test/language/expressions/compound-assignment/11.13.2-47-s.js
@@ -9,18 +9,10 @@ description: >
     property of an object whose [[Extensible]] internal property is
     false
 flags: [onlyStrict]
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
         var obj = {};
         Object.preventExtensions(obj);
-
-        try {
+assert.throws(TypeError, function() {
             obj.len %= 10;
-            return false;
-        } catch (e) {
-            return e instanceof TypeError;
-        }
-    }
-runTestCase(testcase);
+});
diff --git a/test/language/expressions/compound-assignment/11.13.2-48-s.js b/test/language/expressions/compound-assignment/11.13.2-48-s.js
index a6f09bfe956ef236e1f1f9bc8405b7e0872a575d..920b643ccbf901094e3828be4c1b148bd6d71135 100644
--- a/test/language/expressions/compound-assignment/11.13.2-48-s.js
+++ b/test/language/expressions/compound-assignment/11.13.2-48-s.js
@@ -9,18 +9,10 @@ description: >
     property of an object whose [[Extensible]] internal property is
     false
 flags: [onlyStrict]
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
         var obj = {};
         Object.preventExtensions(obj);
-
-        try {
+assert.throws(TypeError, function() {
             obj.len += 10;
-            return false;
-        } catch (e) {
-            return e instanceof TypeError;
-        }
-    }
-runTestCase(testcase);
+});
diff --git a/test/language/expressions/compound-assignment/11.13.2-49-s.js b/test/language/expressions/compound-assignment/11.13.2-49-s.js
index fc5dff939baf2beb93220f3f2ccbfc420f0a1a28..48f3aedbf5654c7074e842f67a3e883ac789f8cd 100644
--- a/test/language/expressions/compound-assignment/11.13.2-49-s.js
+++ b/test/language/expressions/compound-assignment/11.13.2-49-s.js
@@ -9,18 +9,10 @@ description: >
     property of an object whose [[Extensible]] internal property is
     false
 flags: [onlyStrict]
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
         var obj = {};
         Object.preventExtensions(obj);
-
-        try {
+assert.throws(TypeError, function() {
             obj.len -= 10;
-            return false;
-        } catch (e) {
-            return e instanceof TypeError;
-        }
-    }
-runTestCase(testcase);
+});
diff --git a/test/language/expressions/compound-assignment/11.13.2-5-s.js b/test/language/expressions/compound-assignment/11.13.2-5-s.js
index 6c9bc27a6b1b0be58f60dde7586e6982124edc24..16654674aa065c3fa25f92c5d0dfe2e8fa5a4db0 100644
--- a/test/language/expressions/compound-assignment/11.13.2-5-s.js
+++ b/test/language/expressions/compound-assignment/11.13.2-5-s.js
@@ -7,15 +7,9 @@ description: >
     Strict Mode - ReferenceError is thrown if the
     LeftHandSideExpression of a Compound Assignment operator(-=)
     evaluates to an unresolvable reference
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
-        try {
+
+assert.throws(ReferenceError, function() {
             eval("_11_13_2_5 -= 1;");
-            return false;
-        } catch (e) {
-            return e instanceof ReferenceError;
-        }
-    }
-runTestCase(testcase);
+});
diff --git a/test/language/expressions/compound-assignment/11.13.2-50-s.js b/test/language/expressions/compound-assignment/11.13.2-50-s.js
index bca80fc10020ef754810dad5c225c30b44d756dd..2e46189b66c52b96e63d961ee3c708ed9cdaa09c 100644
--- a/test/language/expressions/compound-assignment/11.13.2-50-s.js
+++ b/test/language/expressions/compound-assignment/11.13.2-50-s.js
@@ -9,18 +9,10 @@ description: >
     property of an object whose [[Extensible]] internal property is
     false
 flags: [onlyStrict]
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
         var obj = {};
         Object.preventExtensions(obj);
-
-        try {
+assert.throws(TypeError, function() {
             obj.len <<= 10;
-            return false;
-        } catch (e) {
-            return e instanceof TypeError;
-        }
-    }
-runTestCase(testcase);
+});
diff --git a/test/language/expressions/compound-assignment/11.13.2-51-s.js b/test/language/expressions/compound-assignment/11.13.2-51-s.js
index 1700bb52d10e90ea2db7ed041858d9a2f8fa847f..53d27cb234daa80271371e8f78e69fbc1be5f6cc 100644
--- a/test/language/expressions/compound-assignment/11.13.2-51-s.js
+++ b/test/language/expressions/compound-assignment/11.13.2-51-s.js
@@ -9,18 +9,10 @@ description: >
     property of an object whose [[Extensible]] internal property is
     false
 flags: [onlyStrict]
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
         var obj = {};
         Object.preventExtensions(obj);
-
-        try {
+assert.throws(TypeError, function() {
             obj.len >>= 10;
-            return false;
-        } catch (e) {
-            return e instanceof TypeError;
-        }
-    }
-runTestCase(testcase);
+});
diff --git a/test/language/expressions/compound-assignment/11.13.2-52-s.js b/test/language/expressions/compound-assignment/11.13.2-52-s.js
index 903fe627ceea15c446cf52a9610356e233b3109b..e0f5b604e9473d4d68c448a43e496fa845a30961 100644
--- a/test/language/expressions/compound-assignment/11.13.2-52-s.js
+++ b/test/language/expressions/compound-assignment/11.13.2-52-s.js
@@ -9,18 +9,10 @@ description: >
     non-existent property of an object whose [[Extensible]] internal
     property if false
 flags: [onlyStrict]
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
         var obj = {};
         Object.preventExtensions(obj);
-
-        try {
+assert.throws(TypeError, function() {
             obj.len >>>= 10;
-            return false;
-        } catch (e) {
-            return e instanceof TypeError;
-        }
-    }
-runTestCase(testcase);
+});
diff --git a/test/language/expressions/compound-assignment/11.13.2-53-s.js b/test/language/expressions/compound-assignment/11.13.2-53-s.js
index e806f5c7f05630621afbbff8850d3ef262b22b69..335a8ba0a7172cb2a040ee82429367dec97f9e38 100644
--- a/test/language/expressions/compound-assignment/11.13.2-53-s.js
+++ b/test/language/expressions/compound-assignment/11.13.2-53-s.js
@@ -9,18 +9,10 @@ description: >
     property of an object whose [[Extensible]] internal property is
     false
 flags: [onlyStrict]
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
         var obj = {};
         Object.preventExtensions(obj);
-
-        try {
+assert.throws(TypeError, function() {
             obj.len &= 10;
-            return false;
-        } catch (e) {
-            return e instanceof TypeError;
-        }
-    }
-runTestCase(testcase);
+});
diff --git a/test/language/expressions/compound-assignment/11.13.2-54-s.js b/test/language/expressions/compound-assignment/11.13.2-54-s.js
index 3ea74293a3ab4fe63dd5df73174914a697c0b1d2..f0c9a4930292a3efb7c20fdcbec7317048d85b58 100644
--- a/test/language/expressions/compound-assignment/11.13.2-54-s.js
+++ b/test/language/expressions/compound-assignment/11.13.2-54-s.js
@@ -9,18 +9,10 @@ description: >
     property of an object whose [[Extensible]] internal property is
     false
 flags: [onlyStrict]
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
         var obj = {};
         Object.preventExtensions(obj);
-
-        try {
+assert.throws(TypeError, function() {
             obj.len ^= 10;
-            return false;
-        } catch (e) {
-            return e instanceof TypeError;
-        }
-    }
-runTestCase(testcase);
+});
diff --git a/test/language/expressions/compound-assignment/11.13.2-55-s.js b/test/language/expressions/compound-assignment/11.13.2-55-s.js
index 572557313210c31aea47ea37f6a2c1608e11ff20..9a56c0a23687b4be682b1a63f5ada0630d15eec8 100644
--- a/test/language/expressions/compound-assignment/11.13.2-55-s.js
+++ b/test/language/expressions/compound-assignment/11.13.2-55-s.js
@@ -9,18 +9,10 @@ description: >
     property of an object whose [[Extensible]] internal property is
     false
 flags: [onlyStrict]
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
         var obj = {};
         Object.preventExtensions(obj);
-
-        try {
+assert.throws(TypeError, function() {
             obj.len |= 10;
-            return false;
-        } catch (e) {
-            return e instanceof TypeError;
-        }
-    }
-runTestCase(testcase);
+});
diff --git a/test/language/expressions/compound-assignment/11.13.2-6-1-s.js b/test/language/expressions/compound-assignment/11.13.2-6-1-s.js
index cc66c4642ad0ba0461e032f7c08f52fff84dd963..2e8f1b9c883c6467f510637f46a9a1fde227a11d 100644
--- a/test/language/expressions/compound-assignment/11.13.2-6-1-s.js
+++ b/test/language/expressions/compound-assignment/11.13.2-6-1-s.js
@@ -7,16 +7,10 @@ description: >
     Strict Mode - SyntaxError is thrown if the identifier eval appear
     as the LeftHandSideExpression of a Compound Assignment operator(*=)
 flags: [onlyStrict]
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
         var blah = eval;
-        try {
+assert.throws(SyntaxError, function() {
             eval("eval *= 20;");
-            return false;
-        } catch (e) {
-            return e instanceof SyntaxError && blah === eval;
-        }
-    }
-runTestCase(testcase);
+});
+assert.sameValue(blah, eval, 'blah');
diff --git a/test/language/expressions/compound-assignment/11.13.2-6-10-s.js b/test/language/expressions/compound-assignment/11.13.2-6-10-s.js
index e126407e213103808381988893099494897303e5..aa3ff2c02f8b427cd9957e07b3a6f3cdee302e13 100644
--- a/test/language/expressions/compound-assignment/11.13.2-6-10-s.js
+++ b/test/language/expressions/compound-assignment/11.13.2-6-10-s.js
@@ -7,16 +7,10 @@ description: >
     Strict Mode - SyntaxError is thrown if the identifier eval appear
     as the LeftHandSideExpression of a Compound Assignment operator(^=)
 flags: [onlyStrict]
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
         var blah = eval;
-        try {
+assert.throws(SyntaxError, function() {
             eval("eval ^= 20;");
-            return false;
-        } catch (e) {
-            return e instanceof SyntaxError && blah === eval;
-        }
-    }
-runTestCase(testcase);
+});
+assert.sameValue(blah, eval, 'blah');
diff --git a/test/language/expressions/compound-assignment/11.13.2-6-11-s.js b/test/language/expressions/compound-assignment/11.13.2-6-11-s.js
index ea5caeca817e56488b10e33b070d439f58440b66..a6bd1295a6912f53b106e81623f5db4ae8df1e75 100644
--- a/test/language/expressions/compound-assignment/11.13.2-6-11-s.js
+++ b/test/language/expressions/compound-assignment/11.13.2-6-11-s.js
@@ -7,16 +7,10 @@ description: >
     Strict Mode - SyntaxError is thrown if the identifier eval appear
     as the LeftHandSideExpression of a Compound Assignment operator(|=)
 flags: [onlyStrict]
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
         var blah = eval;
-        try {
-            eval("eval |= 20;"); 
-            return false;
-        } catch (e) {
-            return e instanceof SyntaxError && blah === eval;
-        }
-    }
-runTestCase(testcase);
+assert.throws(SyntaxError, function() {
+            eval("eval |= 20;");
+});
+assert.sameValue(blah, eval, 'blah');
diff --git a/test/language/expressions/compound-assignment/11.13.2-6-2-s.js b/test/language/expressions/compound-assignment/11.13.2-6-2-s.js
index 3be6d709f971e71f4b9d11d1bcbb13853c2665f8..e2e549c3d8b8f57c64b350b368db9cbad39d6b13 100644
--- a/test/language/expressions/compound-assignment/11.13.2-6-2-s.js
+++ b/test/language/expressions/compound-assignment/11.13.2-6-2-s.js
@@ -7,16 +7,10 @@ description: >
     Strict Mode - SyntaxError is thrown if the identifier eval appear
     as the LeftHandSideExpression of a Compound Assignment operator(/=)
 flags: [onlyStrict]
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
         var blah = eval;
-        try {
+assert.throws(SyntaxError, function() {
             eval("eval /= 20;");
-            return false;
-        } catch (e) {
-            return e instanceof SyntaxError && blah === eval;
-        }
-    }
-runTestCase(testcase);
+});
+assert.sameValue(blah, eval, 'blah');
diff --git a/test/language/expressions/compound-assignment/11.13.2-6-3-s.js b/test/language/expressions/compound-assignment/11.13.2-6-3-s.js
index 0612d5364f49ab8d94240fa5d544091fd9299340..6e79a2089c35061a393b7d0219740a1839906709 100644
--- a/test/language/expressions/compound-assignment/11.13.2-6-3-s.js
+++ b/test/language/expressions/compound-assignment/11.13.2-6-3-s.js
@@ -7,16 +7,10 @@ description: >
     Strict Mode - SyntaxError is thrown if the identifier eval appear
     as the LeftHandSideExpression of a Compound Assignment operator(%=)
 flags: [onlyStrict]
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
         var blah = eval;
-        try {
+assert.throws(SyntaxError, function() {
             eval("eval %= 20;");
-            return false;
-        } catch (e) {
-            return e instanceof SyntaxError && blah === eval;
-        }
-    }
-runTestCase(testcase);
+});
+assert.sameValue(blah, eval, 'blah');
diff --git a/test/language/expressions/compound-assignment/11.13.2-6-4-s.js b/test/language/expressions/compound-assignment/11.13.2-6-4-s.js
index eab0d354ce5aa83044d5044bae254b6dd20ce8cf..fbff6abb72ec4bca60795afa4b2c9869e6dee2ae 100644
--- a/test/language/expressions/compound-assignment/11.13.2-6-4-s.js
+++ b/test/language/expressions/compound-assignment/11.13.2-6-4-s.js
@@ -7,16 +7,10 @@ description: >
     Strict Mode - SyntaxError is thrown if the identifier eval appear
     as the LeftHandSideExpression of a Compound Assignment operator(+=)
 flags: [onlyStrict]
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
         var blah = eval;
-        try {
+assert.throws(SyntaxError, function() {
             eval("eval += 20;");
-            return false;
-        } catch (e) {
-            return e instanceof SyntaxError && blah === eval;
-        }
-    }
-runTestCase(testcase);
+});
+assert.sameValue(blah, eval, 'blah');
diff --git a/test/language/expressions/compound-assignment/11.13.2-6-5-s.js b/test/language/expressions/compound-assignment/11.13.2-6-5-s.js
index 93389778e8ddc14fdcf0c5d5e572b9f114027ac6..a01ada3635946effed0216f859f20bd9ca521f91 100644
--- a/test/language/expressions/compound-assignment/11.13.2-6-5-s.js
+++ b/test/language/expressions/compound-assignment/11.13.2-6-5-s.js
@@ -7,16 +7,10 @@ description: >
     Strict Mode - SyntaxError is thrown if the identifier eval appear
     as the LeftHandSideExpression of a Compound Assignment operator(-=)
 flags: [onlyStrict]
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
         var blah = eval;
-        try {
+assert.throws(SyntaxError, function() {
             eval("eval -= 20;");
-            return false;
-        } catch (e) {
-            return e instanceof SyntaxError && blah === eval;
-        }
-    }
-runTestCase(testcase);
+});
+assert.sameValue(blah, eval, 'blah');
diff --git a/test/language/expressions/compound-assignment/11.13.2-6-6-s.js b/test/language/expressions/compound-assignment/11.13.2-6-6-s.js
index b57fed01017ba33be14a661040df0b27a0085eb1..c4c7360c80166f0c64b3914adc08848a50faf54d 100644
--- a/test/language/expressions/compound-assignment/11.13.2-6-6-s.js
+++ b/test/language/expressions/compound-assignment/11.13.2-6-6-s.js
@@ -8,16 +8,10 @@ description: >
     as the LeftHandSideExpression of a Compound Assignment
     operator(<<=)
 flags: [onlyStrict]
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
         var blah = eval;
-        try {
+assert.throws(SyntaxError, function() {
             eval("eval <<= 20;");
-            return false;
-        } catch (e) {
-            return e instanceof SyntaxError && blah === eval;
-        }
-    }
-runTestCase(testcase);
+});
+assert.sameValue(blah, eval, 'blah');
diff --git a/test/language/expressions/compound-assignment/11.13.2-6-7-s.js b/test/language/expressions/compound-assignment/11.13.2-6-7-s.js
index 1599e4f899bcb75449620464a29fc7bbe14006f0..8778fbdf1f08d92bc41129c60c2faae5f86c1f44 100644
--- a/test/language/expressions/compound-assignment/11.13.2-6-7-s.js
+++ b/test/language/expressions/compound-assignment/11.13.2-6-7-s.js
@@ -8,16 +8,10 @@ description: >
     as the LeftHandSideExpression of a Compound Assignment
     operator(>>=)
 flags: [onlyStrict]
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
         var blah = eval;
-        try {
+assert.throws(SyntaxError, function() {
             eval("eval >>= 20;");
-            return false;
-        } catch (e) {
-            return e instanceof SyntaxError && blah === eval;
-        }
-    }
-runTestCase(testcase);
+});
+assert.sameValue(blah, eval, 'blah');
diff --git a/test/language/expressions/compound-assignment/11.13.2-6-8-s.js b/test/language/expressions/compound-assignment/11.13.2-6-8-s.js
index 66519aa72a9da624a558a1d5ee053bfffea19a95..f67a3b7ffc25d0323e96f2e0831e4d291318e6fd 100644
--- a/test/language/expressions/compound-assignment/11.13.2-6-8-s.js
+++ b/test/language/expressions/compound-assignment/11.13.2-6-8-s.js
@@ -8,16 +8,10 @@ description: >
     as the LeftHandSideExpression of a Compound Assignment
     operator(>>>=)
 flags: [onlyStrict]
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
         var blah = eval;
-        try {
+assert.throws(SyntaxError, function() {
             eval("eval >>>= 20;");
-            return false;
-        } catch (e) {
-            return e instanceof SyntaxError && blah === eval;
-        }
-    }
-runTestCase(testcase);
+});
+assert.sameValue(blah, eval, 'blah');
diff --git a/test/language/expressions/compound-assignment/11.13.2-6-9-s.js b/test/language/expressions/compound-assignment/11.13.2-6-9-s.js
index 098cca5865d74f0a9478a190feef8c79957dd10d..4db6cba4ad666f0b5b9c5852f83fa125e22f5407 100644
--- a/test/language/expressions/compound-assignment/11.13.2-6-9-s.js
+++ b/test/language/expressions/compound-assignment/11.13.2-6-9-s.js
@@ -7,16 +7,10 @@ description: >
     Strict Mode - SyntaxError is thrown if the identifier eval appear
     as the LeftHandSideExpression of a Compound Assignment operator(&=)
 flags: [onlyStrict]
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
         var blah = eval;
-        try {
+assert.throws(SyntaxError, function() {
             eval("eval &= 20;");
-            return false;
-        } catch (e) {
-            return e instanceof SyntaxError && blah === eval;
-        }
-    }
-runTestCase(testcase);
+});
+assert.sameValue(blah, eval, 'blah');
diff --git a/test/language/expressions/compound-assignment/11.13.2-6-s.js b/test/language/expressions/compound-assignment/11.13.2-6-s.js
index 563676a9af142737b8d332606700d9b5404984ff..14084ba7e2fc3aa2b6f3512e647b739758740402 100644
--- a/test/language/expressions/compound-assignment/11.13.2-6-s.js
+++ b/test/language/expressions/compound-assignment/11.13.2-6-s.js
@@ -7,15 +7,9 @@ description: >
     Strict Mode - ReferenceError is thrown if the
     LeftHandSideExpression of a Compound Assignment operator(<<=)
     evaluates to an unresolvable reference
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
-        try {
+
+assert.throws(ReferenceError, function() {
             eval("_11_13_2_6 <<= 1;");
-            return false;
-        } catch (e) {
-            return e instanceof ReferenceError;
-        }
-    }
-runTestCase(testcase);
+});
diff --git a/test/language/expressions/compound-assignment/11.13.2-7-s.js b/test/language/expressions/compound-assignment/11.13.2-7-s.js
index f6a6fa948e3d64c71611c995ced9090f58af8ee5..ae8d2b19219ccf5e2d489f0e48b7fb5fe2795cad 100644
--- a/test/language/expressions/compound-assignment/11.13.2-7-s.js
+++ b/test/language/expressions/compound-assignment/11.13.2-7-s.js
@@ -8,15 +8,9 @@ description: >
     LeftHandSideExpression of a Compound Assignment operator(>>=)
     evaluates to an unresolvable reference
 flags: [onlyStrict]
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
-        try {
+
+assert.throws(ReferenceError, function() {
             eval("_11_13_2_7 >>= 1;");
-            return false;
-        } catch (e) {
-            return e instanceof ReferenceError;
-        }
-    }
-runTestCase(testcase);
+});
diff --git a/test/language/expressions/compound-assignment/11.13.2-8-s.js b/test/language/expressions/compound-assignment/11.13.2-8-s.js
index d37ef25a6a5e5236676b3afe2f06ecd74d0453ae..ecd1cd83265accfb739a6bb012fefd20216ee373 100644
--- a/test/language/expressions/compound-assignment/11.13.2-8-s.js
+++ b/test/language/expressions/compound-assignment/11.13.2-8-s.js
@@ -7,15 +7,9 @@ description: >
     Strict Mode - ReferenceError is thrown if the
     LeftHandSideExpression of a Compound Assignment operator(>>>=)
     evaluates to an unresolvable reference
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
-        try {
+
+assert.throws(ReferenceError, function() {
             eval("_11_13_2_8 >>>= 1;");
-            return false;
-        } catch (e) {
-            return e instanceof ReferenceError;
-        }
-    }
-runTestCase(testcase);
+});
diff --git a/test/language/expressions/compound-assignment/11.13.2-9-s.js b/test/language/expressions/compound-assignment/11.13.2-9-s.js
index b58701da848942a99aed3e3606e3c75dd3be9934..50836f4f629626f9749a2af19cbd943668550253 100644
--- a/test/language/expressions/compound-assignment/11.13.2-9-s.js
+++ b/test/language/expressions/compound-assignment/11.13.2-9-s.js
@@ -7,15 +7,9 @@ description: >
     Strict Mode - ReferenceError is thrown if the
     LeftHandSideExpression of a Compound Assignment operator(&=)
     evaluates to an unresolvable reference
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
-        try {
+
+assert.throws(ReferenceError, function() {
             eval("_11_13_2_9 &= 1;");
-            return false;
-        } catch (e) {
-            return e instanceof ReferenceError;
-        }
-    }
-runTestCase(testcase);
+});
diff --git a/test/language/expressions/delete/11.4.1-3-2.js b/test/language/expressions/delete/11.4.1-3-2.js
index df1c3f612e36be43b667d3f1da57f1dc18ae5ce1..608468319bda2ba415b028271c38c05f34cb83b0 100644
--- a/test/language/expressions/delete/11.4.1-3-2.js
+++ b/test/language/expressions/delete/11.4.1-3-2.js
@@ -6,19 +6,9 @@ es5id: 11.4.1-3-2
 description: >
     delete operator throws ReferenceError when deleting an explicitly
     qualified yet unresolvable reference (base obj undefined)
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
   // just cooking up a long/veryLikely unique name
-  try
-  {
+assert.throws(ReferenceError, function() {
     var d = delete __ES3_1_test_suite_test_11_4_1_3_unique_id_2__.x;
-  }
-  catch(e)
-  {
-    if (e instanceof ReferenceError)
-      return true;
-  }
- }
-runTestCase(testcase);
+});
diff --git a/test/language/expressions/delete/11.4.1-3-a-1-s.js b/test/language/expressions/delete/11.4.1-3-a-1-s.js
index fd3db626cc345df39b25e1526f92235810cd4d97..cb66ac0321d0e2d61f264a6629154d8b697be373 100644
--- a/test/language/expressions/delete/11.4.1-3-a-1-s.js
+++ b/test/language/expressions/delete/11.4.1-3-a-1-s.js
@@ -7,16 +7,9 @@ description: >
     Strict Mode - SyntaxError is thrown when deleting an un-resolvable
     reference
 flags: [onlyStrict]
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
 
-        try {
+assert.throws(SyntaxError, function() {
             eval("delete obj");
-            return false;
-        } catch (e) {
-            return e instanceof SyntaxError;
-        }
-    }
-runTestCase(testcase);
+});
diff --git a/test/language/expressions/delete/11.4.1-4-a-1-s.js b/test/language/expressions/delete/11.4.1-4-a-1-s.js
index cd5b561e9eab5b829039c7b4e1fc45a6921652ea..73544a0fd4dd1ba973174fa560b9851e21463981 100644
--- a/test/language/expressions/delete/11.4.1-4-a-1-s.js
+++ b/test/language/expressions/delete/11.4.1-4-a-1-s.js
@@ -7,21 +7,14 @@ description: >
     Strict Mode - TypeError is thrown when deleting non-configurable
     data property
 flags: [onlyStrict]
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
         var obj = {};
         Object.defineProperty(obj, "prop", {
             value: "abc",
             configurable: false
         });
-
-        try {
+assert.throws(TypeError, function() {
             delete obj.prop;
-            return false;
-        } catch (e) {
-            return e instanceof TypeError && obj.prop === "abc";
-        }
-    }
-runTestCase(testcase);
+});
+assert.sameValue(obj.prop, "abc", 'obj.prop');
diff --git a/test/language/expressions/delete/11.4.1-4-a-2-s.js b/test/language/expressions/delete/11.4.1-4-a-2-s.js
index b61a6c0e69769b6350f1ed7fd0fd946782772e5a..431d61f1c2e39a8fff2d29cb2e9fec2f0a96340f 100644
--- a/test/language/expressions/delete/11.4.1-4-a-2-s.js
+++ b/test/language/expressions/delete/11.4.1-4-a-2-s.js
@@ -7,10 +7,8 @@ description: >
     Strict Mode - TypeError is thrown when deleting non-configurable
     accessor property
 flags: [onlyStrict]
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
         var obj = {};
         Object.defineProperty(obj, "prop", {
             get: function () {
@@ -18,12 +16,7 @@ function testcase() {
             },
             configurable: false
         });
-
-        try {
+assert.throws(TypeError, function() {
             delete obj.prop;
-            return false;
-        } catch (e) {
-            return e instanceof TypeError && obj.prop === "abc";
-        }
-    }
-runTestCase(testcase);
+});
+assert.sameValue(obj.prop, "abc", 'obj.prop');
diff --git a/test/language/expressions/delete/11.4.1-4.a-3-s.js b/test/language/expressions/delete/11.4.1-4.a-3-s.js
index 501f3162e779af03a0e9807e10a75ce5bfa83c71..1ea95a6b7c6547277f476dce73f27bfe002ed4f3 100644
--- a/test/language/expressions/delete/11.4.1-4.a-3-s.js
+++ b/test/language/expressions/delete/11.4.1-4.a-3-s.js
@@ -10,21 +10,13 @@ description: >
     delete operator throws TypeError when deleting a non-configurable
     data property in strict mode
 flags: [onlyStrict]
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
   var o = {};
   var desc = { value : 1 }; // all other attributes default to false
   Object.defineProperty(o, "foo", desc);
   
   // Now, deleting o.foo should throw TypeError because [[Configurable]] on foo is false.
-  try {
+assert.throws(TypeError, function() {
     delete o.foo;
-    return false;
-  }
-  catch (e) {
-    return (e instanceof TypeError);
-  }
- }
-runTestCase(testcase);
+});
diff --git a/test/language/expressions/delete/11.4.1-4.a-8-s.js b/test/language/expressions/delete/11.4.1-4.a-8-s.js
index 69bb9fa51e6caaf2ccebd28e6f77ad275bf3da02..a0dd257efe0411fdf48e7501de371949d49096cc 100644
--- a/test/language/expressions/delete/11.4.1-4.a-8-s.js
+++ b/test/language/expressions/delete/11.4.1-4.a-8-s.js
@@ -10,19 +10,10 @@ description: >
     delete operator throws TypeError when deleting a non-configurable
     data property in strict mode
 flags: [onlyStrict]
-includes:
-    - runTestCase.js
-    - fnGlobalObject.js
+includes: [fnGlobalObject.js]
 ---*/
 
-function testcase() {
   // NaN (15.1.1.1) has [[Configurable]] set to false.
-  try {
+assert.throws(TypeError, function() {
     delete fnGlobalObject().NaN;
-    return false;
-  }
-  catch (e) {
-    return (e instanceof TypeError);
-  }
- }
-runTestCase(testcase);
+});
diff --git a/test/language/expressions/delete/11.4.1-4.a-9-s.js b/test/language/expressions/delete/11.4.1-4.a-9-s.js
index 197d0769eb004ff7cb123c9a3dbc89a9d768f249..f4cefb2cadd6c20398f522aad228ebd8464525a5 100644
--- a/test/language/expressions/delete/11.4.1-4.a-9-s.js
+++ b/test/language/expressions/delete/11.4.1-4.a-9-s.js
@@ -10,16 +10,9 @@ description: >
     delete operator throws TypeError when deleting a non-configurable
     data property (Math.LN2) in strict mode
 flags: [onlyStrict]
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
-  try {
+
+assert.throws(TypeError, function() {
     delete Math.LN2;
-    return false;
-  }
-  catch (e) {
-    return (e instanceof TypeError); 
-  }
- }
-runTestCase(testcase);
+});
diff --git a/test/language/expressions/delete/11.4.1-5-a-1-s.js b/test/language/expressions/delete/11.4.1-5-a-1-s.js
index b7200bc3e7f3a874539deaa6cd37cf646b5832d4..86575dd324628a11c93fcc58e39a4025bad74574 100644
--- a/test/language/expressions/delete/11.4.1-5-a-1-s.js
+++ b/test/language/expressions/delete/11.4.1-5-a-1-s.js
@@ -7,17 +7,9 @@ description: >
     Strict Mode - SyntaxError is thrown when deleting a variable which
     is a primitive value type (number)
 flags: [onlyStrict]
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
         var _11_4_1_5 = 5;
-
-        try {
+assert.throws(SyntaxError, function() {
             eval("delete _11_4_1_5;");
-            return false;
-        } catch (e) {
-            return e instanceof SyntaxError;
-        }
-    }
-runTestCase(testcase);
+});
diff --git a/test/language/expressions/delete/11.4.1-5-a-10-s.js b/test/language/expressions/delete/11.4.1-5-a-10-s.js
index 5b23498a975ddef755b5d542ecd296c4109e725b..a48304837a33bcd9bc06c8ee36034ecefb72f823 100644
--- a/test/language/expressions/delete/11.4.1-5-a-10-s.js
+++ b/test/language/expressions/delete/11.4.1-5-a-10-s.js
@@ -7,17 +7,9 @@ description: >
     Strict Mode - SyntaxError is thrown when deleting a variable of
     type Array
 flags: [onlyStrict]
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
         var arrObj = [1,2,3];
-
-        try {
+assert.throws(SyntaxError, function() {
             eval("delete arrObj;");
-            return false;
-        } catch (e) {
-            return e instanceof SyntaxError;
-        }
-    }
-runTestCase(testcase);
+});
diff --git a/test/language/expressions/delete/11.4.1-5-a-11-s.js b/test/language/expressions/delete/11.4.1-5-a-11-s.js
index 57f22f6c904575a888d106fb055d3abd8d290568..49c29c283f7dd038578501e17fb37c8ebc4d459b 100644
--- a/test/language/expressions/delete/11.4.1-5-a-11-s.js
+++ b/test/language/expressions/delete/11.4.1-5-a-11-s.js
@@ -7,17 +7,9 @@ description: >
     Strict Mode - SyntaxError is thrown when deleting a variable of
     type String
 flags: [onlyStrict]
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
         var strObj = new String("abc");
-
-        try {
+assert.throws(SyntaxError, function() {
             eval("delete strObj;");
-            return false;
-        } catch (e) {
-            return e instanceof SyntaxError;
-        }
-    }
-runTestCase(testcase);
+});
diff --git a/test/language/expressions/delete/11.4.1-5-a-12-s.js b/test/language/expressions/delete/11.4.1-5-a-12-s.js
index e292408768cb36f86ce42fe101e7362c84e69402..1b6c4d62b62b66349a43c37c5d644aba4b42ef2f 100644
--- a/test/language/expressions/delete/11.4.1-5-a-12-s.js
+++ b/test/language/expressions/delete/11.4.1-5-a-12-s.js
@@ -7,17 +7,9 @@ description: >
     Strict Mode - SyntaxError is thrown when deleting a variable of
     type Boolean
 flags: [onlyStrict]
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
         var boolObj = new Boolean(false);
-
-        try {
+assert.throws(SyntaxError, function() {
             eval("delete boolObj;");
-            return false;
-        } catch (e) {
-            return e instanceof SyntaxError;
-        }
-    }
-runTestCase(testcase);
+});
diff --git a/test/language/expressions/delete/11.4.1-5-a-13-s.js b/test/language/expressions/delete/11.4.1-5-a-13-s.js
index aeb96027b871df1542dab291b1b6cb8c043b3364..7fd02683808440733d46b674aef6feb3118d494f 100644
--- a/test/language/expressions/delete/11.4.1-5-a-13-s.js
+++ b/test/language/expressions/delete/11.4.1-5-a-13-s.js
@@ -7,17 +7,9 @@ description: >
     Strict Mode - SyntaxError is thrown when deleting a variable of
     type Number
 flags: [onlyStrict]
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
         var numObj = new Number(0);
-
-        try {
+assert.throws(SyntaxError, function() {
             eval("delete numObj;");
-            return false;
-        } catch (e) {
-            return e instanceof SyntaxError;
-        }
-    }
-runTestCase(testcase);
+});
diff --git a/test/language/expressions/delete/11.4.1-5-a-14-s.js b/test/language/expressions/delete/11.4.1-5-a-14-s.js
index c39db53a43ff8c4648a977557b772b5a7e5a5e49..f9f20d490db24d72670c2faa836d3dee3634fdeb 100644
--- a/test/language/expressions/delete/11.4.1-5-a-14-s.js
+++ b/test/language/expressions/delete/11.4.1-5-a-14-s.js
@@ -7,17 +7,9 @@ description: >
     Strict Mode - SyntaxError is thrown when deleting a variable of
     type Date
 flags: [onlyStrict]
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
         var dateObj = new Date();
-
-        try {
+assert.throws(SyntaxError, function() {
             eval("delete dateObj;");
-            return false;
-        } catch (e) {
-            return e instanceof SyntaxError;
-        }
-    }
-runTestCase(testcase);
+});
diff --git a/test/language/expressions/delete/11.4.1-5-a-15-s.js b/test/language/expressions/delete/11.4.1-5-a-15-s.js
index f3f54e138c7c706a488875d22a2239e02ae143cd..38e873065adceedcca662184623234d09b8af28e 100644
--- a/test/language/expressions/delete/11.4.1-5-a-15-s.js
+++ b/test/language/expressions/delete/11.4.1-5-a-15-s.js
@@ -7,17 +7,9 @@ description: >
     Strict Mode - SyntaxError is thrown when deleting a variable of
     type RegExp
 flags: [onlyStrict]
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
         var regObj = new RegExp();
-
-        try {
+assert.throws(SyntaxError, function() {
             eval("delete regObj;");
-            return false;
-        } catch (e) {
-            return e instanceof SyntaxError;
-        }
-    }
-runTestCase(testcase);
+});
diff --git a/test/language/expressions/delete/11.4.1-5-a-16-s.js b/test/language/expressions/delete/11.4.1-5-a-16-s.js
index 876760d2ab07bdccc7e6344f6d25f0ea5ec201e6..cf730de501be7e93e8f9d5612f1ef6159ba29ace 100644
--- a/test/language/expressions/delete/11.4.1-5-a-16-s.js
+++ b/test/language/expressions/delete/11.4.1-5-a-16-s.js
@@ -7,17 +7,9 @@ description: >
     Strict Mode - SyntaxError is thrown when deleting a variable of
     type Error
 flags: [onlyStrict]
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
         var errObj = new Error();
-
-        try {
+assert.throws(SyntaxError, function() {
             eval("delete errObj;");
-            return false;
-        } catch (e) {
-            return e instanceof SyntaxError;
-        }
-    }
-runTestCase(testcase);
+});
diff --git a/test/language/expressions/delete/11.4.1-5-a-17-s.js b/test/language/expressions/delete/11.4.1-5-a-17-s.js
index 502b09219d973fd3581856fc9725ee6f15af7254..55ebf2e489e00528bbd4538893d03761010381b2 100644
--- a/test/language/expressions/delete/11.4.1-5-a-17-s.js
+++ b/test/language/expressions/delete/11.4.1-5-a-17-s.js
@@ -7,16 +7,9 @@ description: >
     Strict Mode - SyntaxError is thrown when deleting a variable of
     type Arguments
 flags: [onlyStrict]
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
-       try {
-            eval("var argObj = (function (a, b) { delete arguments; }(1, 2));");
 
-            return false;
-        } catch (e) {
-            return e instanceof SyntaxError;
-        }
-    }
-runTestCase(testcase);
+assert.throws(SyntaxError, function() {
+            eval("var argObj = (function (a, b) { delete arguments; }(1, 2));");
+});
diff --git a/test/language/expressions/delete/11.4.1-5-a-18-s.js b/test/language/expressions/delete/11.4.1-5-a-18-s.js
index c370de06f168bc41bf75ad4995782ef5b77cebbf..eb1af56e10d583876cda1b7dfa94ac2d8ded7590 100644
--- a/test/language/expressions/delete/11.4.1-5-a-18-s.js
+++ b/test/language/expressions/delete/11.4.1-5-a-18-s.js
@@ -7,15 +7,9 @@ description: >
     Strict Mode - SyntaxError is thrown when deleting a built-in
     (Object)
 flags: [onlyStrict]
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
-        try {
+
+assert.throws(SyntaxError, function() {
             eval("delete Object;");
-            return false;
-        } catch (e) {
-            return e instanceof SyntaxError;
-        }
-    }
-runTestCase(testcase);
+});
diff --git a/test/language/expressions/delete/11.4.1-5-a-19-s.js b/test/language/expressions/delete/11.4.1-5-a-19-s.js
index f960f9032f8c114c1612ba4bf2285264117ac3e6..442e22f0b9dcf3a8e9b194c0251a13cd4b09cdb4 100644
--- a/test/language/expressions/delete/11.4.1-5-a-19-s.js
+++ b/test/language/expressions/delete/11.4.1-5-a-19-s.js
@@ -7,15 +7,9 @@ description: >
     Strict Mode - SyntaxError is thrown when deleting a built-in
     (Function)
 flags: [onlyStrict]
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
-        try {
+
+assert.throws(SyntaxError, function() {
             eval("delete Function;");
-            return false;
-        } catch (e) {
-            return e instanceof SyntaxError;
-        }
-    }
-runTestCase(testcase);
+});
diff --git a/test/language/expressions/delete/11.4.1-5-a-2-s.js b/test/language/expressions/delete/11.4.1-5-a-2-s.js
index 1d39f9a2d51c65eb2f69c0981d0a1da0aa5e8524..b9afc1edf2b9dcd97bf6011bb723da7ad1cbb904 100644
--- a/test/language/expressions/delete/11.4.1-5-a-2-s.js
+++ b/test/language/expressions/delete/11.4.1-5-a-2-s.js
@@ -7,19 +7,11 @@ description: >
     Strict Mode - SyntaxError is thrown when deleting a function
     parameter
 flags: [onlyStrict]
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
         function funObj(x) {
             eval("delete x;");
         }
-
-        try {
+assert.throws(SyntaxError, function() {
             funObj(1);
-            return false;
-        } catch (e) {
-            return e instanceof SyntaxError;
-        }
-    }
-runTestCase(testcase);
+});
diff --git a/test/language/expressions/delete/11.4.1-5-a-20-s.js b/test/language/expressions/delete/11.4.1-5-a-20-s.js
index 2f66bd7ed9b4ef9ad0c764a42211f300b23fea0a..456c4b3f07bd4099cb469a026095fbfb0fa924e0 100644
--- a/test/language/expressions/delete/11.4.1-5-a-20-s.js
+++ b/test/language/expressions/delete/11.4.1-5-a-20-s.js
@@ -7,15 +7,9 @@ description: >
     Strict Mode - SyntaxError is thrown when deleting a built-in
     (Array)
 flags: [onlyStrict]
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
-        try {
+
+assert.throws(SyntaxError, function() {
             eval("delete Array;");
-            return false;
-        } catch (e) {
-            return e instanceof SyntaxError;
-        }
-    }
-runTestCase(testcase);
+});
diff --git a/test/language/expressions/delete/11.4.1-5-a-21-s.js b/test/language/expressions/delete/11.4.1-5-a-21-s.js
index 43d29cb98ba9b585b646a0e32bfd8f75747dc4ba..1bf9bd3ce12addf71db80a0300240fc3140b7b50 100644
--- a/test/language/expressions/delete/11.4.1-5-a-21-s.js
+++ b/test/language/expressions/delete/11.4.1-5-a-21-s.js
@@ -7,15 +7,9 @@ description: >
     Strict Mode - SyntaxError is thrown when deleting a built-in
     (String)
 flags: [onlyStrict]
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
-        try {
+
+assert.throws(SyntaxError, function() {
             eval("delete String;");
-            return false;
-        } catch (e) {
-            return e instanceof SyntaxError;
-        }
-    }
-runTestCase(testcase);
+});
diff --git a/test/language/expressions/delete/11.4.1-5-a-22-s.js b/test/language/expressions/delete/11.4.1-5-a-22-s.js
index acab4ea75628c357304bb98500a08bf655527d04..1e02b15aa77d7917d5bb57ba7c3bf3c2936d4133 100644
--- a/test/language/expressions/delete/11.4.1-5-a-22-s.js
+++ b/test/language/expressions/delete/11.4.1-5-a-22-s.js
@@ -7,15 +7,9 @@ description: >
     Strict Mode - SyntaxError is thrown when deleting a built-in
     (Boolean)
 flags: [onlyStrict]
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
-        try {
+
+assert.throws(SyntaxError, function() {
             eval("delete Boolean;");
-            return false;
-        } catch (e) {
-            return e instanceof SyntaxError;
-        }
-    }
-runTestCase(testcase);
+});
diff --git a/test/language/expressions/delete/11.4.1-5-a-23-s.js b/test/language/expressions/delete/11.4.1-5-a-23-s.js
index 1eb2eb08dff20a669dcc95bc73ea85641522c92f..e383430d8bb0e92ca011fd7d75d6ca86ae9d74c1 100644
--- a/test/language/expressions/delete/11.4.1-5-a-23-s.js
+++ b/test/language/expressions/delete/11.4.1-5-a-23-s.js
@@ -7,15 +7,9 @@ description: >
     Strict Mode - SyntaxError is thrown when deleting a built-in
     (Number)
 flags: [onlyStrict]
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
-        try {
+
+assert.throws(SyntaxError, function() {
             eval("delete Number;");
-            return false;
-        } catch (e) {
-            return e instanceof SyntaxError;
-        }
-    }
-runTestCase(testcase);
+});
diff --git a/test/language/expressions/delete/11.4.1-5-a-24-s.js b/test/language/expressions/delete/11.4.1-5-a-24-s.js
index e3782a273b6f86aaffedecc26e6080fc5a020c0a..ef63b0579dd10ff37f0ae0700f1702438c969407 100644
--- a/test/language/expressions/delete/11.4.1-5-a-24-s.js
+++ b/test/language/expressions/delete/11.4.1-5-a-24-s.js
@@ -5,15 +5,9 @@
 es5id: 11.4.1-5-a-24-s
 description: Strict Mode - SyntaxError is thrown when deleting a built-in (Date)
 flags: [onlyStrict]
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
-        try {
+
+assert.throws(SyntaxError, function() {
             eval("delete Date;");
-            return false;
-        } catch (e) {
-            return e instanceof SyntaxError;
-        }
-    }
-runTestCase(testcase);
+});
diff --git a/test/language/expressions/delete/11.4.1-5-a-25-s.js b/test/language/expressions/delete/11.4.1-5-a-25-s.js
index dcbf2ccb44eaf20008be5a6d54eab965e32795e3..8484c985a3c61360953fc9d74d419786711c0542 100644
--- a/test/language/expressions/delete/11.4.1-5-a-25-s.js
+++ b/test/language/expressions/delete/11.4.1-5-a-25-s.js
@@ -7,15 +7,9 @@ description: >
     Strict Mode - SyntaxError is thrown when deleting a built-in
     (RegExp)
 flags: [onlyStrict]
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
-        try {
+
+assert.throws(SyntaxError, function() {
             eval("delete RegExp;");
-            return false;
-        } catch (e) {
-            return e instanceof SyntaxError;
-        }
-    }
-runTestCase(testcase);
+});
diff --git a/test/language/expressions/delete/11.4.1-5-a-27-s.js b/test/language/expressions/delete/11.4.1-5-a-27-s.js
index 04e2a9e76c893a1d417936f14795f434e934c5b9..b2bd6258854a65c6f743c70efbf05bf13d15425a 100644
--- a/test/language/expressions/delete/11.4.1-5-a-27-s.js
+++ b/test/language/expressions/delete/11.4.1-5-a-27-s.js
@@ -7,18 +7,11 @@ description: >
     Strict Mode - TypeError is thrown after deleting a property,
     calling preventExtensions, and attempting to reassign the property
 flags: [onlyStrict]
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
         var a = {x:0, get y() { return 0;}};
         delete a.x;
         Object.preventExtensions(a);
-        try {
+assert.throws(TypeError, function() {
             a.x = 1;
-            return false;
-        } catch (e) {
-            return e instanceof TypeError;
-        }
-}
-runTestCase(testcase);
+});
diff --git a/test/language/expressions/delete/11.4.1-5-a-3-s.js b/test/language/expressions/delete/11.4.1-5-a-3-s.js
index 7780f4ddc2dfeed8f7600d37bd821d6bcf7cf87a..224dd524e3a81aa744f2ba895dbca7dac4a1cdf2 100644
--- a/test/language/expressions/delete/11.4.1-5-a-3-s.js
+++ b/test/language/expressions/delete/11.4.1-5-a-3-s.js
@@ -5,17 +5,9 @@
 es5id: 11.4.1-5-a-3-s
 description: Strict Mode - SyntaxError is thrown when deleting a function name
 flags: [onlyStrict]
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
         function funObj () { }
-
-        try {
+assert.throws(SyntaxError, function() {
             eval("delete funObj");
-            return false;
-        } catch (e) {
-            return e instanceof SyntaxError;
-        }
-    }
-runTestCase(testcase);
+});
diff --git a/test/language/expressions/delete/11.4.1-5-a-4-s.js b/test/language/expressions/delete/11.4.1-5-a-4-s.js
index 51714eba872fed7ca0c3a74c14d3820e7bd0f153..93138ea90c730bc3261ad8f4784d27a53f0a8039 100644
--- a/test/language/expressions/delete/11.4.1-5-a-4-s.js
+++ b/test/language/expressions/delete/11.4.1-5-a-4-s.js
@@ -7,19 +7,11 @@ description: >
     Strict Mode - SyntaxError is thrown when deleting a function
     parameter
 flags: [onlyStrict]
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
         function funObj(x, y, z) {
             eval("delete y;");
         }
-
-        try {
+assert.throws(SyntaxError, function() {
             funObj(1);
-            return false;
-        } catch (e) {
-            return e instanceof SyntaxError;
-        }
-    }
-runTestCase(testcase);
+});
diff --git a/test/language/expressions/delete/11.4.1-5-a-5-s.js b/test/language/expressions/delete/11.4.1-5-a-5-s.js
index 88020733c1b7ba26912215fd103d898674235088..b6b12cc04cb2210b4679ffe53df88e76ef1fd4eb 100644
--- a/test/language/expressions/delete/11.4.1-5-a-5-s.js
+++ b/test/language/expressions/delete/11.4.1-5-a-5-s.js
@@ -7,17 +7,9 @@ description: >
     Strict Mode - SyntaxError is thrown when deleting a variable which
     is a primitive type (boolean)
 flags: [onlyStrict]
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
         var _11_4_1_5 = true;
-
-        try {
+assert.throws(SyntaxError, function() {
             eval("delete _11_4_1_5;");
-            return false;
-        } catch (e) {
-            return e instanceof SyntaxError;
-        }
-    }
-runTestCase(testcase);
+});
diff --git a/test/language/expressions/delete/11.4.1-5-a-6-s.js b/test/language/expressions/delete/11.4.1-5-a-6-s.js
index 4a4cd5ee0ba2b1e60dbce0e9bf5103ba72f51912..1d30df158bad2e4440e6a85c7adc887e88681efe 100644
--- a/test/language/expressions/delete/11.4.1-5-a-6-s.js
+++ b/test/language/expressions/delete/11.4.1-5-a-6-s.js
@@ -7,17 +7,9 @@ description: >
     Strict Mode - SyntaxError is thrown when deleting a variable which
     is a primitive type (string)
 flags: [onlyStrict]
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
         var _11_4_1_5 = "abc";
-
-        try {
+assert.throws(SyntaxError, function() {
             eval("delete _11_4_1_5;");
-            return false;
-        } catch (e) {
-            return e instanceof SyntaxError;
-        }
-    }
-runTestCase(testcase);
+});
diff --git a/test/language/expressions/delete/11.4.1-5-a-7-s.js b/test/language/expressions/delete/11.4.1-5-a-7-s.js
index a9dd1f76f9740b7ee6e1db51235f710f7abfc059..b29661e7ec8669435d584455b305bc8c8f01c5c2 100644
--- a/test/language/expressions/delete/11.4.1-5-a-7-s.js
+++ b/test/language/expressions/delete/11.4.1-5-a-7-s.js
@@ -7,17 +7,9 @@ description: >
     Strict Mode - SyntaxError is thrown when deleting a variable of
     type Object
 flags: [onlyStrict]
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
         var obj = new Object();
-
-        try {
+assert.throws(SyntaxError, function() {
             eval("delete obj;");
-            return false;
-        } catch (e) {
-            return e instanceof SyntaxError;
-        }
-    }
-runTestCase(testcase);
+});
diff --git a/test/language/expressions/delete/11.4.1-5-a-8-s.js b/test/language/expressions/delete/11.4.1-5-a-8-s.js
index ee7fabd4c26c626f87a362f66a433c0b83c8aa59..721bae15fd75f60e8631100320a07b207de479d3 100644
--- a/test/language/expressions/delete/11.4.1-5-a-8-s.js
+++ b/test/language/expressions/delete/11.4.1-5-a-8-s.js
@@ -5,17 +5,9 @@
 es5id: 11.4.1-5-a-8-s
 description: Strict Mode - SyntaxError is thrown when deleting a function object
 flags: [onlyStrict]
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
         var funObj = function () { };
-
-        try {
+assert.throws(SyntaxError, function() {
             eval("delete funObj;");
-            return false;
-        } catch (e) {
-            return e instanceof SyntaxError;
-        }
-    }
-runTestCase(testcase);
+});
diff --git a/test/language/expressions/delete/11.4.1-5-a-9-s.js b/test/language/expressions/delete/11.4.1-5-a-9-s.js
index 4f511027121fd3faa9b4a697157da4e0f7273587..0a5cf3622aa271dbdb2286e1762481ddd43500c3 100644
--- a/test/language/expressions/delete/11.4.1-5-a-9-s.js
+++ b/test/language/expressions/delete/11.4.1-5-a-9-s.js
@@ -7,17 +7,9 @@ description: >
     Strict Mode - SyntaxError is thrown when deleting a variable of
     type function (declaration)
 flags: [onlyStrict]
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
         function funObj () { };
-
-        try {
+assert.throws(SyntaxError, function() {
             eval("delete funObj;");
-            return false;
-        } catch (e) {
-            return e instanceof SyntaxError;
-        }
-    }
-runTestCase(testcase);
+});
diff --git a/test/language/expressions/delete/11.4.4-4.a-3-s.js b/test/language/expressions/delete/11.4.4-4.a-3-s.js
index 8f9455fc5d8d22eb087f42390494135b7b4abb7f..72c7a0ad74087862a34500c9d3fa54b88201050d 100644
--- a/test/language/expressions/delete/11.4.4-4.a-3-s.js
+++ b/test/language/expressions/delete/11.4.4-4.a-3-s.js
@@ -10,21 +10,13 @@ description: >
     delete operator throws TypeError when deleting a non-configurable
     data property in strict mode
 flags: [onlyStrict]
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
   var o = {};
   var desc = { value : 1 }; // all other attributes default to false
   Object.defineProperty(o, "foo", desc);
   
   // Now, deleting o.foo should throw TypeError because [[Configurable]] on foo is false.
-  try {
+assert.throws(TypeError, function() {
     delete o.foo;
-    return false;
-  }
-  catch (e) {
-    return (e instanceof TypeError);
-  }
- }
-runTestCase(testcase);
+});
diff --git a/test/language/expressions/object/11.1.5-1-s.js b/test/language/expressions/object/11.1.5-1-s.js
index 865f4d7dffce2993e7c858a116e3f2953c42e37e..abc491dcbe2fabd3da88ff90c9db63e085c0baa0 100644
--- a/test/language/expressions/object/11.1.5-1-s.js
+++ b/test/language/expressions/object/11.1.5-1-s.js
@@ -8,15 +8,9 @@ description: >
     Identifier in a PropertySetParameterList of a PropertyAssignment
     that is contained in strict code
 flags: [onlyStrict]
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
-        try {
+
+assert.throws(SyntaxError, function() {
             eval("var obj = {set _11_1_5_1_fun(eval) {}};");
-            return false;
-        } catch (e) {
-            return (e instanceof SyntaxError);
-        }
-    }
-runTestCase(testcase);
+});
diff --git a/test/language/expressions/object/11.1.5-2-s.js b/test/language/expressions/object/11.1.5-2-s.js
index 604191572ecb44ceeab8974a14493c5e268c1094..7a4c054df9974164b024125027a952b50d1181cf 100644
--- a/test/language/expressions/object/11.1.5-2-s.js
+++ b/test/language/expressions/object/11.1.5-2-s.js
@@ -8,15 +8,9 @@ description: >
     Identifier in a PropertySetParameterList of a PropertyAssignment
     that is contained in strict code
 flags: [onlyStrict]
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
-        try {
+
+assert.throws(SyntaxError, function() {
             eval("var obj = {set _11_1_5_2_fun(arguments) {} };");
-             return false;
-        } catch (e) {
-            return (e instanceof SyntaxError);
-        }
-    }
-runTestCase(testcase);
+});
diff --git a/test/language/expressions/object/11.1.5-3-s.js b/test/language/expressions/object/11.1.5-3-s.js
index 7817fcea21d184ed298266bda508f83d35cc110f..831a8019443e715a498b69c983928dcba0a0c32b 100644
--- a/test/language/expressions/object/11.1.5-3-s.js
+++ b/test/language/expressions/object/11.1.5-3-s.js
@@ -8,16 +8,9 @@ description: >
     Identifier in a PropertySetParameterList of a PropertyAssignment
     if its FunctionBody is strict code
 flags: [noStrict]
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
 
-        try {
+assert.throws(SyntaxError, function() {
             eval("var obj = {set _11_1_5_3_fun(eval) { \"use strict\"; }};");
-            return false;
-        } catch (e) {
-            return (e instanceof SyntaxError);
-        }
-    }
-runTestCase(testcase);
+});
diff --git a/test/language/expressions/object/11.1.5-4-s.js b/test/language/expressions/object/11.1.5-4-s.js
index 422416f0cdfa0797e3a1d16428e743f7c1b01f96..dc1613906276c1bf30dd5d465892301c45faff66 100644
--- a/test/language/expressions/object/11.1.5-4-s.js
+++ b/test/language/expressions/object/11.1.5-4-s.js
@@ -8,16 +8,9 @@ description: >
     the Identifier in a PropertySetParameterList of a
     PropertyAssignment  if its FunctionBody is strict code
 flags: [noStrict]
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
 
-        try {
+assert.throws(SyntaxError, function() {
             eval("var obj = {set _11_1_5_4_fun(arguments) {\"use strict\";}};");
-            return false;
-        } catch (e) {
-            return (e instanceof SyntaxError);
-        }
-    }
-runTestCase(testcase);
+});
diff --git a/test/language/expressions/object/11.1.5_6-2-1-s.js b/test/language/expressions/object/11.1.5_6-2-1-s.js
index 589a2075e683ea7a5af546c4a30c0e3c3a85271c..65035c0eacf39887f9d900ba72c9b3100d13b609 100644
--- a/test/language/expressions/object/11.1.5_6-2-1-s.js
+++ b/test/language/expressions/object/11.1.5_6-2-1-s.js
@@ -7,11 +7,10 @@ description: >
     Strict Mode - SyntaxError is thrown when an assignment to a
     reserved word or a future reserved word is contained in strict code
 flags: [onlyStrict]
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
-        try {
+
+assert.throws(SyntaxError, function() {
             eval("var obj = {\
                 get _11_1_5_6_2_1() {\
                    public = 42;\
@@ -20,9 +19,4 @@ function testcase() {
             };");
 
             var _11_1_5_6_2_1 = obj._11_1_5_6_2_1;
-            return false;
-        } catch (e) {
-            return e instanceof SyntaxError;
-        }
-    }
-runTestCase(testcase);
+});
diff --git a/test/language/expressions/object/11.1.5_6-2-2-s.js b/test/language/expressions/object/11.1.5_6-2-2-s.js
index d52470741da41ab3c6a2c2c41fa260c2a5bd9654..9ae348ff548de82caae8b53d1a76e40e82c5ba47 100644
--- a/test/language/expressions/object/11.1.5_6-2-2-s.js
+++ b/test/language/expressions/object/11.1.5_6-2-2-s.js
@@ -8,12 +8,10 @@ description: >
     reserved word or a future reserved word is made inside a strict
     mode FunctionBody of a PropertyAssignment
 flags: [noStrict]
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
 
-        try {
+assert.throws(SyntaxError, function() {
             eval("var obj = {\
                 get _11_1_5_6_2_2() {\
                    \"use strict\";\
@@ -22,9 +20,4 @@ function testcase() {
                 }\
             };\
             var _11_1_5_6_2_2 = obj._11_1_5_6_2_2;");
-            return false;
-        } catch (e) {
-            return e instanceof SyntaxError;
-        }
-    }
-runTestCase(testcase);
+});
diff --git a/test/language/expressions/object/11.1.5_7-2-1-s.js b/test/language/expressions/object/11.1.5_7-2-1-s.js
index e0361fc5db5b6bdfa1759c66ab0f160c3b63cace..f71697741698b585650d63232a14f7a9428e0e45 100644
--- a/test/language/expressions/object/11.1.5_7-2-1-s.js
+++ b/test/language/expressions/object/11.1.5_7-2-1-s.js
@@ -7,11 +7,10 @@ description: >
     Strict Mode - SyntaxError is thrown when an assignment to a
     reserved word is contained in strict code
 flags: [onlyStrict]
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
-        try {
+
+assert.throws(SyntaxError, function() {
             eval("var data = \"data\";\
             var obj = {\
                 set _11_1_5_7_2_1(value) {\
@@ -20,9 +19,4 @@ function testcase() {
                 }\
             };\
             obj._11_1_5_7_2_1 = 1;");
-            return false;
-        } catch (e) {
-            return e instanceof SyntaxError;
-        }
-    }
-runTestCase(testcase);
+});
diff --git a/test/language/expressions/object/11.1.5_7-2-2-s.js b/test/language/expressions/object/11.1.5_7-2-2-s.js
index 84b0ac3a136ed587986b02ae859f2b80d9890e2f..08cfe79dfc650ad3a04c99b6e8224a4d04d2a2a3 100644
--- a/test/language/expressions/object/11.1.5_7-2-2-s.js
+++ b/test/language/expressions/object/11.1.5_7-2-2-s.js
@@ -8,11 +8,10 @@ description: >
     reserved word is made in  a strict FunctionBody of a
     PropertyAssignment
 flags: [onlyStrict]
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
-        try {
+
+assert.throws(SyntaxError, function() {
             eval("var data = \"data\";\
             var obj = {\
                 set _11_1_5_7_2_2(value) {\
@@ -21,9 +20,4 @@ function testcase() {
                 }\
             };\
             obj._11_1_5_7_2_2 = 1;");
-            return false;
-        } catch (e) {
-            return e instanceof SyntaxError;
-        }
-    }
-runTestCase(testcase);
+});
diff --git a/test/language/expressions/postfix-decrement/11.3.2-2-2-s.js b/test/language/expressions/postfix-decrement/11.3.2-2-2-s.js
index 0fc15b17a1336eeae3943578b65f4b313f35d526..526318e0e7a1f61009b21f752da46d5f8c4d71d3 100644
--- a/test/language/expressions/postfix-decrement/11.3.2-2-2-s.js
+++ b/test/language/expressions/postfix-decrement/11.3.2-2-2-s.js
@@ -7,16 +7,10 @@ description: >
     Strict Mode - SyntaxError is thrown if the identifier 'eval'
     appear as a PostfixExpression(eval--)
 flags: [onlyStrict]
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
         var blah = eval;
-        try {
+assert.throws(SyntaxError, function() {
             eval("eval--;");
-            return false;
-        } catch (e) {
-            return e instanceof SyntaxError && blah === eval;
-        }
-    }
-runTestCase(testcase);
+});
+assert.sameValue(blah, eval, 'blah');
diff --git a/test/language/expressions/postfix-increment/11.3.1-2-2-s.js b/test/language/expressions/postfix-increment/11.3.1-2-2-s.js
index 56aaa3d1a805cdad029fbf8ae18e72d9d3acbd7a..54e117f989b098b508fab8cb1db4a2ea736db200 100644
--- a/test/language/expressions/postfix-increment/11.3.1-2-2-s.js
+++ b/test/language/expressions/postfix-increment/11.3.1-2-2-s.js
@@ -7,16 +7,10 @@ description: >
     Strict Mode - SyntaxError is thrown if the identifier 'eval'
     appear as a PostfixExpression(eval++)
 flags: [onlyStrict]
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
         var blah = eval;
-        try {
+assert.throws(SyntaxError, function() {
             eval("eval++;");
-            return false;
-        } catch (e) {
-            return e instanceof SyntaxError && blah === eval;
-        }
-    }
-runTestCase(testcase);
+});
+assert.sameValue(blah, eval, 'blah');
diff --git a/test/language/expressions/prefix-decrement/11.4.5-2-1-s.js b/test/language/expressions/prefix-decrement/11.4.5-2-1-s.js
index fbbf882999c8932bcff062ab9c383679a2971261..5c1058187d7f1d64a6ead26468f0edbc85cc6638 100644
--- a/test/language/expressions/prefix-decrement/11.4.5-2-1-s.js
+++ b/test/language/expressions/prefix-decrement/11.4.5-2-1-s.js
@@ -5,16 +5,10 @@
 es5id: 11.4.5-2-1-s
 description: Strict Mode - SyntaxError is thrown for --eval
 flags: [onlyStrict]
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
         var blah = eval;
-        try {
+assert.throws(SyntaxError, function() {
             eval("--eval;");
-            return false;
-        } catch (e) {
-            return e instanceof SyntaxError && blah === eval;
-        }
-    }
-runTestCase(testcase);
+});
+assert.sameValue(blah, eval, 'blah');
diff --git a/test/language/expressions/prefix-increment/11.4.4-2-1-s.js b/test/language/expressions/prefix-increment/11.4.4-2-1-s.js
index 9ff404bdc955a0934e1888f8fa4b718e5e314b49..35f72e827d3e340b77a14498e059c73583e66f28 100644
--- a/test/language/expressions/prefix-increment/11.4.4-2-1-s.js
+++ b/test/language/expressions/prefix-increment/11.4.4-2-1-s.js
@@ -5,16 +5,10 @@
 es5id: 11.4.4-2-1-s
 description: Strict Mode - SyntaxError is thrown for ++eval
 flags: [onlyStrict]
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
         var blah = eval;
-        try {
+assert.throws(SyntaxError, function() {
             eval("++eval;");
-            return false;
-        } catch (e) {
-            return e instanceof SyntaxError && blah === eval;
-        }
-    }
-runTestCase(testcase);
+});
+assert.sameValue(blah, eval, 'blah');
diff --git a/test/language/future-reserved-words/7.6.1-17-s.js b/test/language/future-reserved-words/7.6.1-17-s.js
index c4c6a0c5bb05035beb59e645ed6dccc4361e9430..114a6beca9321661596dd8360592ba3844c8c313 100644
--- a/test/language/future-reserved-words/7.6.1-17-s.js
+++ b/test/language/future-reserved-words/7.6.1-17-s.js
@@ -7,16 +7,9 @@ description: >
     7.6 - SyntaxError expected: reserved words used as Identifier
     Names in UTF8: implements (implements)
 flags: [onlyStrict]
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
 
-        try {
-            eval("var \u0069mplements = 123;");
-            return false;
-        } catch (e) {
-            return e instanceof SyntaxError;
-        }
-    }
-runTestCase(testcase);
+assert.throws(SyntaxError, function() {
+            eval("var \u0069mplements = 123;");
+});
diff --git a/test/language/future-reserved-words/7.6.1-18-s.js b/test/language/future-reserved-words/7.6.1-18-s.js
index 1b9d7b87471492edcc7009a8e3ff04de6891b0b6..0512a03ad9e65d03f4b9634ddd78c78d182b4c91 100644
--- a/test/language/future-reserved-words/7.6.1-18-s.js
+++ b/test/language/future-reserved-words/7.6.1-18-s.js
@@ -7,15 +7,9 @@ description: >
     7.6 - SyntaxError expected: reserved words used as Identifier
     Names in UTF8: l\u0065t (let)
 flags: [onlyStrict]
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {        
-        try {
-            eval("var l\u0065t = 123;");
-            return false;
-        } catch (e) {
-            return e instanceof SyntaxError;
-        }
-}
-runTestCase(testcase);
+        
+assert.throws(SyntaxError, function() {
+            eval("var l\u0065t = 123;");
+});
diff --git a/test/language/future-reserved-words/7.6.1-19-s.js b/test/language/future-reserved-words/7.6.1-19-s.js
index 7a9386884272a17b315ebc1faf964813856f7583..c3c33f5503a6a2c2822a81f91012af1e7c55dfb3 100644
--- a/test/language/future-reserved-words/7.6.1-19-s.js
+++ b/test/language/future-reserved-words/7.6.1-19-s.js
@@ -7,15 +7,9 @@ description: >
     7.6 - SyntaxError expected: reserved words used as Identifier
     Names in UTF8: privat\u0065 (private)
 flags: [onlyStrict]
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
-        try {
-            eval("var privat\u0065 = 123;");
-            return false;
-        } catch (e) {
-            return e instanceof SyntaxError;
-        }
-}
-runTestCase(testcase);
+
+assert.throws(SyntaxError, function() {
+            eval("var privat\u0065 = 123;");
+});
diff --git a/test/language/future-reserved-words/7.6.1-20-s.js b/test/language/future-reserved-words/7.6.1-20-s.js
index 355293f23c45c4625b13ca25b93534469e9fe968..e0b1db3653465f5ab76f1b3e18af3fc0caf1e3c3 100644
--- a/test/language/future-reserved-words/7.6.1-20-s.js
+++ b/test/language/future-reserved-words/7.6.1-20-s.js
@@ -7,15 +7,9 @@ description: >
     7.6 - SyntaxError expected: reserved words used as Identifier
     Names in UTF8: \u0070\u0075\u0062\u006c\u0069\u0063 (public)
 flags: [onlyStrict]
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
-        try {
-            eval("var \u0070\u0075\u0062\u006c\u0069\u0063 = 123;");
-            return false;
-        } catch (e) {
-            return e instanceof SyntaxError;
-        }
-}
-runTestCase(testcase);
+
+assert.throws(SyntaxError, function() {
+            eval("var \u0070\u0075\u0062\u006c\u0069\u0063 = 123;");
+});
diff --git a/test/language/future-reserved-words/7.6.1-21-s.js b/test/language/future-reserved-words/7.6.1-21-s.js
index 3052cda095898407a6258d804a6410d9ee7e2a20..c37c35c1a04526dc41f15e600cc9a25ce48f3ef5 100644
--- a/test/language/future-reserved-words/7.6.1-21-s.js
+++ b/test/language/future-reserved-words/7.6.1-21-s.js
@@ -7,15 +7,9 @@ description: >
     7.6 - SyntaxError expected: reserved words used as Identifier
     Names in UTF8: \u0079ield (yield)
 flags: [onlyStrict]
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
-        try {
-            eval("var \u0079ield = 123;");
-            return false;
-        } catch (e) {
-            return e instanceof SyntaxError;
-        }
-}
-runTestCase(testcase);
+
+assert.throws(SyntaxError, function() {
+            eval("var \u0079ield = 123;");
+});
diff --git a/test/language/future-reserved-words/7.6.1-22-s.js b/test/language/future-reserved-words/7.6.1-22-s.js
index 290f8677897e270144184dd20c078459b88a80f9..0bca6b3f5d14fc65a65edde05449a5bdd3dbe07f 100644
--- a/test/language/future-reserved-words/7.6.1-22-s.js
+++ b/test/language/future-reserved-words/7.6.1-22-s.js
@@ -7,15 +7,9 @@ description: >
     7.6 - SyntaxError expected: reserved words used as Identifier
     Names in UTF8: inte\u0072face (interface)
 flags: [onlyStrict]
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
-        try {
-            eval("var inte\u0072face = 123;");
-            return false;
-        } catch (e) {
-            return e instanceof SyntaxError;
-        }
-}
-runTestCase(testcase);
+
+assert.throws(SyntaxError, function() {
+            eval("var inte\u0072face = 123;");
+});
diff --git a/test/language/future-reserved-words/7.6.1-23-s.js b/test/language/future-reserved-words/7.6.1-23-s.js
index 7514efbf5bb1457d6e7b43b564a360bf0ed9e43b..72ecb0c4817441417e7d79af64903126dde605b6 100644
--- a/test/language/future-reserved-words/7.6.1-23-s.js
+++ b/test/language/future-reserved-words/7.6.1-23-s.js
@@ -7,15 +7,9 @@ description: >
     7.6 - SyntaxError expected: reserved words used as Identifier
     Names in UTF8: packag\u0065 (package)
 flags: [onlyStrict]
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
-        try {
-            eval("var packag\u0065 = 123;");
-            return false;
-        } catch (e) {
-            return e instanceof SyntaxError;
-        }
-}
-runTestCase(testcase);
+
+assert.throws(SyntaxError, function() {
+            eval("var packag\u0065 = 123;");
+});
diff --git a/test/language/future-reserved-words/7.6.1-24-s.js b/test/language/future-reserved-words/7.6.1-24-s.js
index df90c3f272762e3d0d96c7b582b1bf4a225be4c5..d422e14b7baf8f01797eab0cdf630ed7bc3e7647 100644
--- a/test/language/future-reserved-words/7.6.1-24-s.js
+++ b/test/language/future-reserved-words/7.6.1-24-s.js
@@ -8,15 +8,9 @@ description: >
     Names in UTF8:
     \u0070\u0072\u006f\u0074\u0065\u0063\u0074\u0065\u0064 (protected)
 flags: [onlyStrict]
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
-        try {
-            eval("var \u0070\u0072\u006f\u0074\u0065\u0063\u0074\u0065\u0064 = 123;");
-            return false;
-        } catch (e) {
-            return e instanceof SyntaxError;
-        }
-}
-runTestCase(testcase);
+
+assert.throws(SyntaxError, function() {
+            eval("var \u0070\u0072\u006f\u0074\u0065\u0063\u0074\u0065\u0064 = 123;");
+});
diff --git a/test/language/future-reserved-words/7.6.1-25-s.js b/test/language/future-reserved-words/7.6.1-25-s.js
index 9003e3aec8eb8cb67eb2cf356ff28cb6f8047486..47efc0d07c811a3117433f1917df3309cb07eaad 100644
--- a/test/language/future-reserved-words/7.6.1-25-s.js
+++ b/test/language/future-reserved-words/7.6.1-25-s.js
@@ -7,15 +7,9 @@ description: >
     7.6 - SyntaxError expected: reserved words used as Identifier
     Names in UTF8: \u0073\u0074\u0061\u0074\u0069\u0063 (static)
 flags: [onlyStrict]
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
-        try {
-            eval("var \u0073\u0074\u0061\u0074\u0069\u0063 = 123;");
-            return false;
-        } catch (e) {
-            return e instanceof SyntaxError;
-        }
-}
-runTestCase(testcase);
+
+assert.throws(SyntaxError, function() {
+            eval("var \u0073\u0074\u0061\u0074\u0069\u0063 = 123;");
+});
diff --git a/test/language/future-reserved-words/7.6.1.2-1-s.js b/test/language/future-reserved-words/7.6.1.2-1-s.js
index d5018237d34049c58dc39d701adb4404f0e945e0..85f9b58b5d5d5478836ad3d3db5943ac0e4ee792 100644
--- a/test/language/future-reserved-words/7.6.1.2-1-s.js
+++ b/test/language/future-reserved-words/7.6.1.2-1-s.js
@@ -7,15 +7,9 @@ description: >
     Strict Mode - SyntaxError is thrown when FutureReservedWord
     'implements' occurs in strict mode code
 flags: [onlyStrict]
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
-        try {
-            eval("var implements = 1;");
-            return false;
-        } catch (e) {
-            return e instanceof SyntaxError;
-        }
-    }
-runTestCase(testcase);
+
+assert.throws(SyntaxError, function() {
+            eval("var implements = 1;");
+});
diff --git a/test/language/future-reserved-words/7.6.1.2-2-s.js b/test/language/future-reserved-words/7.6.1.2-2-s.js
index eacb04891c92fbf5c0f51c1488c789ab06f717fd..0c2ac187ac33b34b52fc0967ed61d84a65ce5127 100644
--- a/test/language/future-reserved-words/7.6.1.2-2-s.js
+++ b/test/language/future-reserved-words/7.6.1.2-2-s.js
@@ -7,15 +7,9 @@ description: >
     Strict Mode - SyntaxError is thrown when FutureReservedWord 'let'
     occurs in strict mode code
 flags: [onlyStrict]
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
-        try {
-            eval("var let = 1;");
-            return false;
-        } catch (e) {
-            return e instanceof SyntaxError;
-        }
-}
-runTestCase(testcase);
+
+assert.throws(SyntaxError, function() {
+            eval("var let = 1;");
+});
diff --git a/test/language/future-reserved-words/7.6.1.2-3-s.js b/test/language/future-reserved-words/7.6.1.2-3-s.js
index eccde4173525f679bcd327adfc8da62f64b13e65..27c338641a1a37bd7a6391ef95cd30386546c018 100644
--- a/test/language/future-reserved-words/7.6.1.2-3-s.js
+++ b/test/language/future-reserved-words/7.6.1.2-3-s.js
@@ -7,15 +7,9 @@ description: >
     Strict Mode - SyntaxError is thrown when FutureReservedWord
     'private' occurs in strict mode code
 flags: [onlyStrict]
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
-        try {
-            eval("var private = 1;");
-            return false;
-        } catch (e) {
-            return e instanceof SyntaxError;
-        }
-}
-runTestCase(testcase);
+
+assert.throws(SyntaxError, function() {
+            eval("var private = 1;");
+});
diff --git a/test/language/future-reserved-words/7.6.1.2-4-s.js b/test/language/future-reserved-words/7.6.1.2-4-s.js
index 4cd3556e8042753c112fa0aca46c44ffb6157d8a..b215af858ca40ce18f94fcea1719991b93e3f0e0 100644
--- a/test/language/future-reserved-words/7.6.1.2-4-s.js
+++ b/test/language/future-reserved-words/7.6.1.2-4-s.js
@@ -7,15 +7,9 @@ description: >
     Strict Mode - SyntaxError is thrown when FutureReservedWord
     'public' occurs in strict mode code
 flags: [onlyStrict]
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
-        try {
-            eval("var public = 1;");
-            return false;
-        } catch (e) {
-            return e instanceof SyntaxError;
-        }
-}
-runTestCase(testcase);
+
+assert.throws(SyntaxError, function() {
+            eval("var public = 1;");
+});
diff --git a/test/language/future-reserved-words/7.6.1.2-5-s.js b/test/language/future-reserved-words/7.6.1.2-5-s.js
index 5e7b0eea946adb2e2506f4b464c4bc31343da6d8..aa2d106b465a73d955df992b30923c82eb08c6ce 100644
--- a/test/language/future-reserved-words/7.6.1.2-5-s.js
+++ b/test/language/future-reserved-words/7.6.1.2-5-s.js
@@ -7,15 +7,9 @@ description: >
     Strict Mode - SyntaxError is thrown when FutureReservedWord
     'yield' occurs in strict mode code
 flags: [onlyStrict]
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
-        try {
-            eval("var yield = 1;")
-            return false;
-        } catch (e) {
-            return e instanceof SyntaxError;
-        }
-}
-runTestCase(testcase);
+
+assert.throws(SyntaxError, function() {
+            eval("var yield = 1;")
+});
diff --git a/test/language/future-reserved-words/7.6.1.2-6-s.js b/test/language/future-reserved-words/7.6.1.2-6-s.js
index ed8a7affa4a4e22a3a86a49ee60e0f52de7a5144..01c84246e010943679c76d75d66a40f69f2bae22 100644
--- a/test/language/future-reserved-words/7.6.1.2-6-s.js
+++ b/test/language/future-reserved-words/7.6.1.2-6-s.js
@@ -7,15 +7,9 @@ description: >
     Strict Mode - SyntaxError is thrown when FutureReservedWord
     'interface' occurs in strict mode code
 flags: [onlyStrict]
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
-        try {
-            eval("var interface = 1;")
-            return false;
-        } catch (e) {
-            return e instanceof SyntaxError;
-        }
-}
-runTestCase(testcase);
+
+assert.throws(SyntaxError, function() {
+            eval("var interface = 1;")
+});
diff --git a/test/language/future-reserved-words/7.6.1.2-7-s.js b/test/language/future-reserved-words/7.6.1.2-7-s.js
index 6b3c4b98174f7414d12c5b86bf512287c98ac3e5..f074d354207985cd958cf37ff38888a191fadffd 100644
--- a/test/language/future-reserved-words/7.6.1.2-7-s.js
+++ b/test/language/future-reserved-words/7.6.1.2-7-s.js
@@ -7,15 +7,9 @@ description: >
     Strict Mode - SyntaxError is thrown when FutureReservedWord
     'package' occurs in strict mode code
 flags: [onlyStrict]
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
-        try {
-            eval("var package = 1;");
-            return false;
-        } catch (e) {
-            return e instanceof SyntaxError;
-        }
-}
-runTestCase(testcase);
+
+assert.throws(SyntaxError, function() {
+            eval("var package = 1;");
+});
diff --git a/test/language/future-reserved-words/7.6.1.2-8-s.js b/test/language/future-reserved-words/7.6.1.2-8-s.js
index fdc92ecb683e6b1b67f23fee0fdb3b1d883a0b8f..6e08bd214ad4564e7393c3aa30e9b68d1d10ba7f 100644
--- a/test/language/future-reserved-words/7.6.1.2-8-s.js
+++ b/test/language/future-reserved-words/7.6.1.2-8-s.js
@@ -7,15 +7,9 @@ description: >
     Strict Mode - SyntaxError is thrown when FutureReservedWord
     'protected' occurs in strict mode code
 flags: [onlyStrict]
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
-        try {
-            eval("var protected = 1;");
-            return false;
-        } catch (e) {
-            return e instanceof SyntaxError;
-        }
-}
-runTestCase(testcase);
+
+assert.throws(SyntaxError, function() {
+            eval("var protected = 1;");
+});
diff --git a/test/language/future-reserved-words/7.6.1.2-9-s.js b/test/language/future-reserved-words/7.6.1.2-9-s.js
index 4fe80505bb20cdf91bd8ec909fe3a9dd40c4b1a1..0354bd57d82f1a093cff2af4ef8059067374945f 100644
--- a/test/language/future-reserved-words/7.6.1.2-9-s.js
+++ b/test/language/future-reserved-words/7.6.1.2-9-s.js
@@ -7,15 +7,9 @@ description: >
     Strict Mode - SyntaxError is thrown when FutureReservedWord
     'static' occurs in strict mode code
 flags: [onlyStrict]
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
-        try {
-            eval("var static = 1;");
-            return false;
-        } catch (e) {
-            return e instanceof SyntaxError;
-        }
-}
-runTestCase(testcase);
+
+assert.throws(SyntaxError, function() {
+            eval("var static = 1;");
+});
diff --git a/test/language/line-terminators/7.3-10.js b/test/language/line-terminators/7.3-10.js
index d70a321947bd5fa52588c91546f3fa6b6b8f6875..91ed519db9640d71f8928e9a8db361be7fff8aec 100644
--- a/test/language/line-terminators/7.3-10.js
+++ b/test/language/line-terminators/7.3-10.js
@@ -6,15 +6,9 @@ es5id: 7.3-10
 description: >
     7.3 - ES5 recognizes the character <PS> (\u2029) as a
     NonEscapeCharacter
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
-        try {
-            eval("var prop = \\u2029;");
-            return false;
-        } catch (e) {
-            return e instanceof SyntaxError;
-        }
-    }
-runTestCase(testcase);
+
+assert.throws(SyntaxError, function() {
+            eval("var prop = \\u2029;");
+});
diff --git a/test/language/line-terminators/7.3-3.js b/test/language/line-terminators/7.3-3.js
index ff7bd8cb6a7262456b5207fa18100eb85268327f..1e176b858053cb2f9869e22bfe9e8bfc6bb69aa5 100644
--- a/test/language/line-terminators/7.3-3.js
+++ b/test/language/line-terminators/7.3-3.js
@@ -6,15 +6,9 @@ es5id: 7.3-3
 description: >
     7.3 - ES5 recognizes the character <LS> (\u2028) as terminating
     SingleLineComments
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
-        try {
-            eval("//Single Line Comments\u2028 var =;");
-            return false;
-        } catch (e) {
-            return e instanceof SyntaxError;
-        }
-    }
-runTestCase(testcase);
+
+assert.throws(SyntaxError, function() {
+            eval("//Single Line Comments\u2028 var =;");
+});
diff --git a/test/language/line-terminators/7.3-4.js b/test/language/line-terminators/7.3-4.js
index 6450c77ad5786a57c8b45599cb6fd316b49edcbf..b882828e563b1b9ebaea0d90c9189bde4fa576f1 100644
--- a/test/language/line-terminators/7.3-4.js
+++ b/test/language/line-terminators/7.3-4.js
@@ -6,15 +6,9 @@ es5id: 7.3-4
 description: >
     7.3 - ES5 recognizes the character <PS> (\u2029) as terminating
     SingleLineComments
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
-        try {
-            eval("//Single Line Comments\u2029 var =;");
-            return false;
-        } catch (e) {
-            return e instanceof SyntaxError;
-        }
-    }
-runTestCase(testcase);
+
+assert.throws(SyntaxError, function() {
+            eval("//Single Line Comments\u2029 var =;");
+});
diff --git a/test/language/line-terminators/7.3-7.js b/test/language/line-terminators/7.3-7.js
index 3a1a65a5900ec201a475c0fe8e27319598d53c6e..ceff108155299d2d033ed29c6b53f9bea12e6459 100644
--- a/test/language/line-terminators/7.3-7.js
+++ b/test/language/line-terminators/7.3-7.js
@@ -6,15 +6,9 @@ es5id: 7.3-7
 description: >
     7.3 - ES5 recognizes the character <LS> (\u2028) as terminating
     regular expression literals
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
-        try {
-            eval("var regExp =  /[\u2028]/");
-            return false;
-        } catch (e) {
-            return e instanceof SyntaxError;
-        }
-    }
-runTestCase(testcase);
+
+assert.throws(SyntaxError, function() {
+            eval("var regExp =  /[\u2028]/");
+});
diff --git a/test/language/line-terminators/7.3-8.js b/test/language/line-terminators/7.3-8.js
index 28ae25916be7c78da7a74e1c176fd6cb43041f13..2d1160e70fa19e799ad915fd50b1690a68fec346 100644
--- a/test/language/line-terminators/7.3-8.js
+++ b/test/language/line-terminators/7.3-8.js
@@ -6,15 +6,9 @@ es5id: 7.3-8
 description: >
     7.3 - ES5 recognizes the character <PS> (\u2029) as terminating
     regular expression literals
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
-        try {
-            eval("var regExp =  /[\u2029]/");
-            return false;
-        } catch (e) {
-            return e instanceof SyntaxError;
-        }
-    }
-runTestCase(testcase);
+
+assert.throws(SyntaxError, function() {
+            eval("var regExp =  /[\u2029]/");
+});
diff --git a/test/language/line-terminators/7.3-9.js b/test/language/line-terminators/7.3-9.js
index 49a55382c86271a0fefa17134aa7af8f300cb7b6..55645b1fe2bd98366a507476009756540a4898fc 100644
--- a/test/language/line-terminators/7.3-9.js
+++ b/test/language/line-terminators/7.3-9.js
@@ -6,15 +6,9 @@ es5id: 7.3-9
 description: >
     7.3 - ES5 recognizes the character <LS> (\u2028) as a
     NonEscapeCharacter
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
-        try {
-            eval("var prop = \\u2028;");
-            return false;
-        } catch (e) {
-            return e instanceof SyntaxError;
-        }
-    }
-runTestCase(testcase);
+
+assert.throws(SyntaxError, function() {
+            eval("var prop = \\u2028;");
+});
diff --git a/test/language/literals/regexp/7.8.5-1.js b/test/language/literals/regexp/7.8.5-1.js
index 78ed6df6848b2c1ce292de5c62559df42e335b3c..5e37755d8220adda91d65ebb250e5b5d3fb8137c 100644
--- a/test/language/literals/regexp/7.8.5-1.js
+++ b/test/language/literals/regexp/7.8.5-1.js
@@ -7,15 +7,9 @@ description: >
     Literal RegExp Objects - SyntaxError exception is thrown if the
     RegularExpressionNonTerminator position of a
     RegularExpressionBackslashSequence is a LineTerminator.
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
-        try {
-            eval("var regExp = /\\\rn/;");
-            return false;
-        } catch (e) {
-            return e instanceof SyntaxError;
-        }
-    }
-runTestCase(testcase);
+
+assert.throws(SyntaxError, function() {
+            eval("var regExp = /\\\rn/;");
+});
diff --git a/test/language/literals/string/7.8.4-1-s.js b/test/language/literals/string/7.8.4-1-s.js
index 27ce14ca70e601888dd1d621443d30f03e916721..b28c833069dbbd0b28ff37c4a290133a883261fa 100644
--- a/test/language/literals/string/7.8.4-1-s.js
+++ b/test/language/literals/string/7.8.4-1-s.js
@@ -6,18 +6,9 @@ es5id: 7.8.4-1-s
 description: >
     A directive preceeding an 'use strict' directive may not contain
     an OctalEscapeSequence
-includes: [runTestCase.js]
 ---*/
 
-function testcase()
-{
-  try 
-  {
-    eval(' "asterisk: \\052" /* octal escape sequences forbidden in strict mode*/ ; "use strict";');
-    return false;
-  }
-  catch (e) {
-    return (e instanceof SyntaxError);
-  }
- }
-runTestCase(testcase);
+
+assert.throws(SyntaxError, function() {
+    eval(' "asterisk: \\052" /* octal escape sequences forbidden in strict mode*/ ; "use strict";');
+});
diff --git a/test/language/literals/string/7.8.4-10-s.js b/test/language/literals/string/7.8.4-10-s.js
index b794457f2af3a0339d172ab4a0d4e2781853c5f5..3017105e1f51a8ac8b2e21dbf7c0c4ea5fea984e 100644
--- a/test/language/literals/string/7.8.4-10-s.js
+++ b/test/language/literals/string/7.8.4-10-s.js
@@ -5,18 +5,9 @@
 es5id: 7.8.4-10-s
 description: An OctalEscapeSequence is not allowed in a String under Strict Mode
 flags: [onlyStrict]
-includes: [runTestCase.js]
 ---*/
 
-function testcase()
-{
-  try 
-  {
-    eval('var x = " \\10 ";');
-    return false;
-  }
-  catch (e) {
-    return (e instanceof SyntaxError);
-  }
- }
-runTestCase(testcase);
+
+assert.throws(SyntaxError, function() {
+    eval('var x = " \\10 ";');
+});
diff --git a/test/language/literals/string/7.8.4-11-s.js b/test/language/literals/string/7.8.4-11-s.js
index 2d9b2762d40276fff67b1e919292e2c6529553c3..5951af19ae993076608e9e3ee3a429e645ab87a3 100644
--- a/test/language/literals/string/7.8.4-11-s.js
+++ b/test/language/literals/string/7.8.4-11-s.js
@@ -5,18 +5,9 @@
 es5id: 7.8.4-11-s
 description: An OctalEscapeSequence is not allowed in a String under Strict Mode
 flags: [onlyStrict]
-includes: [runTestCase.js]
 ---*/
 
-function testcase()
-{
-  try 
-  {
-    eval('var x = "\\16";');
-    return false;
-  }
-  catch (e) {
-    return (e instanceof SyntaxError);
-  }
-}
-runTestCase(testcase);
+
+assert.throws(SyntaxError, function() {
+    eval('var x = "\\16";');
+});
diff --git a/test/language/literals/string/7.8.4-12-s.js b/test/language/literals/string/7.8.4-12-s.js
index 39bb3ad9e4ccc090c827c1cc8df03c16c64bad2e..f61136a835a3158ffa838313bb0ff14ac0bc2291 100644
--- a/test/language/literals/string/7.8.4-12-s.js
+++ b/test/language/literals/string/7.8.4-12-s.js
@@ -5,18 +5,9 @@
 es5id: 7.8.4-12-s
 description: An OctalEscapeSequence is not allowed in a String under Strict Mode
 flags: [onlyStrict]
-includes: [runTestCase.js]
 ---*/
 
-function testcase()
-{
-  try 
-  {
-    eval('var x = "\\17";');
-    return false;
-  }
-  catch (e) {
-    return (e instanceof SyntaxError);
-  }
-}
-runTestCase(testcase);
+
+assert.throws(SyntaxError, function() {
+    eval('var x = "\\17";');
+});
diff --git a/test/language/literals/string/7.8.4-13-s.js b/test/language/literals/string/7.8.4-13-s.js
index 828c061ab47362ee95bd44ac383d33175d0bad4e..8b564b1bfaa9b0d4169782e8ef961550e7db057e 100644
--- a/test/language/literals/string/7.8.4-13-s.js
+++ b/test/language/literals/string/7.8.4-13-s.js
@@ -5,18 +5,9 @@
 es5id: 7.8.4-13-s
 description: An OctalEscapeSequence is not allowed in a String under Strict Mode
 flags: [onlyStrict]
-includes: [runTestCase.js]
 ---*/
 
-function testcase()
-{
-  try 
-  {
-    eval('var x = "\\30";');
-    return false;
-  }
-  catch (e) {
-    return (e instanceof SyntaxError);
-  }
-}
-runTestCase(testcase);
+
+assert.throws(SyntaxError, function() {
+    eval('var x = "\\30";');
+});
diff --git a/test/language/literals/string/7.8.4-14-s.js b/test/language/literals/string/7.8.4-14-s.js
index 575d1f12d5b1bb48b92e960d5b63a2770013f579..5cc403611b2356f91bffc633d60d85f5ce9c0f43 100644
--- a/test/language/literals/string/7.8.4-14-s.js
+++ b/test/language/literals/string/7.8.4-14-s.js
@@ -5,18 +5,9 @@
 es5id: 7.8.4-14-s
 description: An OctalEscapeSequence is not allowed in a String under Strict Mode
 flags: [onlyStrict]
-includes: [runTestCase.js]
 ---*/
 
-function testcase()
-{
-  try 
-  {
-    eval('var x = "\\31";');
-    return false;
-  }
-  catch (e) {
-    return (e instanceof SyntaxError);
-  }
-}
-runTestCase(testcase);
+
+assert.throws(SyntaxError, function() {
+    eval('var x = "\\31";');
+});
diff --git a/test/language/literals/string/7.8.4-15-s.js b/test/language/literals/string/7.8.4-15-s.js
index 129fb9d1b96d97289351541d29ae740747bb8b29..ed0bd5971bd101c62de14e8522e21d41318add3b 100644
--- a/test/language/literals/string/7.8.4-15-s.js
+++ b/test/language/literals/string/7.8.4-15-s.js
@@ -5,18 +5,9 @@
 es5id: 7.8.4-15-s
 description: An OctalEscapeSequence is not allowed in a String under Strict Mode
 flags: [onlyStrict]
-includes: [runTestCase.js]
 ---*/
 
-function testcase()
-{
-  try 
-  {
-    eval('var x = "\\37";');
-    return false;
-  }
-  catch (e) {
-    return (e instanceof SyntaxError);
-  }
-}
-runTestCase(testcase);
+
+assert.throws(SyntaxError, function() {
+    eval('var x = "\\37";');
+});
diff --git a/test/language/literals/string/7.8.4-16-s.js b/test/language/literals/string/7.8.4-16-s.js
index e83d7a05d087e49c15b121cbc4ea908b19c277f4..8f12c523353e620a1f5c565a08d773c929f10a19 100644
--- a/test/language/literals/string/7.8.4-16-s.js
+++ b/test/language/literals/string/7.8.4-16-s.js
@@ -5,18 +5,9 @@
 es5id: 7.8.4-16-s
 description: An OctalEscapeSequence is not allowed in a String under Strict Mode
 flags: [onlyStrict]
-includes: [runTestCase.js]
 ---*/
 
-function testcase()
-{
-  try 
-  {
-    eval('var x = "\\400";');
-    return false;
-  }
-  catch (e) {
-    return (e instanceof SyntaxError);
-  }
-}
-runTestCase(testcase);
+
+assert.throws(SyntaxError, function() {
+    eval('var x = "\\400";');
+});
diff --git a/test/language/literals/string/7.8.4-17-s.js b/test/language/literals/string/7.8.4-17-s.js
index 9876a5d1ce93cdcdcf52e4374085e4cdb90cf2bd..6941de1e85562729d6b9b211ed40f68898a070b0 100644
--- a/test/language/literals/string/7.8.4-17-s.js
+++ b/test/language/literals/string/7.8.4-17-s.js
@@ -5,18 +5,9 @@
 es5id: 7.8.4-17-s
 description: An OctalEscapeSequence is not allowed in a String under Strict Mode
 flags: [onlyStrict]
-includes: [runTestCase.js]
 ---*/
 
-function testcase()
-{
-  try 
-  {
-    eval('var x = "\\411";');
-    return false;
-  }
-  catch (e) {
-    return (e instanceof SyntaxError);
-  }
-}
-runTestCase(testcase);
+
+assert.throws(SyntaxError, function() {
+    eval('var x = "\\411";');
+});
diff --git a/test/language/literals/string/7.8.4-18-s.js b/test/language/literals/string/7.8.4-18-s.js
index ebd8582cda3dde884de43f84bae366283ba4b639..274ab6874bfac3d5f35a0e2cf6bf2d3006ca28ee 100644
--- a/test/language/literals/string/7.8.4-18-s.js
+++ b/test/language/literals/string/7.8.4-18-s.js
@@ -5,18 +5,9 @@
 es5id: 7.8.4-18-s
 description: An OctalEscapeSequence is not allowed in a String under Strict Mode
 flags: [onlyStrict]
-includes: [runTestCase.js]
 ---*/
 
-function testcase()
-{
-  try 
-  {
-    eval('var x = "\\43a";');
-    return false;
-  }
-  catch (e) {
-    return (e instanceof SyntaxError);
-  }
-}
-runTestCase(testcase);
+
+assert.throws(SyntaxError, function() {
+    eval('var x = "\\43a";');
+});
diff --git a/test/language/literals/string/7.8.4-19-s.js b/test/language/literals/string/7.8.4-19-s.js
index afc2316c270723a3927271b3a62dbf1971d2a63b..d2ccf583603f742e6b0e7f7a8dc1dc1b24109d83 100644
--- a/test/language/literals/string/7.8.4-19-s.js
+++ b/test/language/literals/string/7.8.4-19-s.js
@@ -5,18 +5,9 @@
 es5id: 7.8.4-19-s
 description: An OctalEscapeSequence is not allowed in a String under Strict Mode
 flags: [onlyStrict]
-includes: [runTestCase.js]
 ---*/
 
-function testcase()
-{
-  try 
-  {
-    eval('var x = "\\463";');
-    return false;
-  }
-  catch (e) {
-    return (e instanceof SyntaxError);
-  }
-}
-runTestCase(testcase);
+
+assert.throws(SyntaxError, function() {
+    eval('var x = "\\463";');
+});
diff --git a/test/language/literals/string/7.8.4-2-s.js b/test/language/literals/string/7.8.4-2-s.js
index 835ca46bd2a7f19c989316e4a742d73ee4326c54..6c20f946410f993713e6239b9598f3c51cd644ae 100644
--- a/test/language/literals/string/7.8.4-2-s.js
+++ b/test/language/literals/string/7.8.4-2-s.js
@@ -5,18 +5,9 @@
 es5id: 7.8.4-2-s
 description: An OctalEscapeSequence is not allowed in a String under Strict Mode
 flags: [onlyStrict]
-includes: [runTestCase.js]
 ---*/
 
-function testcase()
-{
-  try 
-  {
-    eval('var x = "\\1";');
-    return false;
-  }
-  catch (e) {
-    return (e instanceof SyntaxError);
-  }
- }
-runTestCase(testcase);
+
+assert.throws(SyntaxError, function() {
+    eval('var x = "\\1";');
+});
diff --git a/test/language/literals/string/7.8.4-20-s.js b/test/language/literals/string/7.8.4-20-s.js
index ad5ac5fe5602166375b891a2be901e2258f9868d..1294acb063dd07280af2e6b5bc63c1fc45127c23 100644
--- a/test/language/literals/string/7.8.4-20-s.js
+++ b/test/language/literals/string/7.8.4-20-s.js
@@ -5,18 +5,9 @@
 es5id: 7.8.4-20-s
 description: An OctalEscapeSequence is not allowed in a String under Strict Mode
 flags: [onlyStrict]
-includes: [runTestCase.js]
 ---*/
 
-function testcase()
-{
-  try 
-  {
-    eval('var x = "\\474";');
-    return false;
-  }
-  catch (e) {
-    return (e instanceof SyntaxError);
-  }
-}
-runTestCase(testcase);
+
+assert.throws(SyntaxError, function() {
+    eval('var x = "\\474";');
+});
diff --git a/test/language/literals/string/7.8.4-21-s.js b/test/language/literals/string/7.8.4-21-s.js
index 8a69f30c5327570ecb1330ad5429a7cf7ff5a271..49ba276d90e1f4e99c2de82c7f7787dc3e353b46 100644
--- a/test/language/literals/string/7.8.4-21-s.js
+++ b/test/language/literals/string/7.8.4-21-s.js
@@ -5,18 +5,9 @@
 es5id: 7.8.4-21-s
 description: An OctalEscapeSequence is not allowed in a String under Strict Mode
 flags: [onlyStrict]
-includes: [runTestCase.js]
 ---*/
 
-function testcase()
-{
-  try 
-  {
-    eval('var x = "\\77";');
-    return false;
-  }
-  catch (e) {
-    return (e instanceof SyntaxError);
-  }
-}
-runTestCase(testcase);
+
+assert.throws(SyntaxError, function() {
+    eval('var x = "\\77";');
+});
diff --git a/test/language/literals/string/7.8.4-22-s.js b/test/language/literals/string/7.8.4-22-s.js
index de4bff9c53d1acf305cb5a42a434c740923f9eb6..4bba3fa449f237e3565ce40870249d5b457b63cb 100644
--- a/test/language/literals/string/7.8.4-22-s.js
+++ b/test/language/literals/string/7.8.4-22-s.js
@@ -5,18 +5,9 @@
 es5id: 7.8.4-22-s
 description: An OctalEscapeSequence is not allowed in a String under Strict Mode
 flags: [onlyStrict]
-includes: [runTestCase.js]
 ---*/
 
-function testcase()
-{
-  try 
-  {
-    eval('var x = "\\777";');
-    return false;
-  }
-  catch (e) {
-    return (e instanceof SyntaxError);
-  }
-}
-runTestCase(testcase);
+
+assert.throws(SyntaxError, function() {
+    eval('var x = "\\777";');
+});
diff --git a/test/language/literals/string/7.8.4-23-s.js b/test/language/literals/string/7.8.4-23-s.js
index c0833852034f3fdc074e1ce332b15df79e679bfa..56ede23c3ae77f3d2058194d286a0df1bdfc414d 100644
--- a/test/language/literals/string/7.8.4-23-s.js
+++ b/test/language/literals/string/7.8.4-23-s.js
@@ -5,18 +5,9 @@
 es5id: 7.8.4-23-s
 description: An OctalEscapeSequence is not allowed in a String under Strict Mode
 flags: [onlyStrict]
-includes: [runTestCase.js]
 ---*/
 
-function testcase()
-{
-  try 
-  {
-    eval('var x = "\\000";');
-    return false;
-  }
-  catch (e) {
-    return (e instanceof SyntaxError);
-  }
-}
-runTestCase(testcase);
+
+assert.throws(SyntaxError, function() {
+    eval('var x = "\\000";');
+});
diff --git a/test/language/literals/string/7.8.4-24-s.js b/test/language/literals/string/7.8.4-24-s.js
index adfd4d57445f20b7795baa16af47938f566a56b1..401c59d9dbf1989dc9ea965923d4af4ad9948d72 100644
--- a/test/language/literals/string/7.8.4-24-s.js
+++ b/test/language/literals/string/7.8.4-24-s.js
@@ -5,18 +5,9 @@
 es5id: 7.8.4-24-s
 description: An OctalEscapeSequence is not allowed in a String under Strict Mode
 flags: [onlyStrict]
-includes: [runTestCase.js]
 ---*/
 
-function testcase()
-{
-  try 
-  {
-    eval('var x = "\\001";');
-    return false;
-  }
-  catch (e) {
-    return (e instanceof SyntaxError);
-  }
-}
-runTestCase(testcase);
+
+assert.throws(SyntaxError, function() {
+    eval('var x = "\\001";');
+});
diff --git a/test/language/literals/string/7.8.4-25-s.js b/test/language/literals/string/7.8.4-25-s.js
index c8f398569ca0af83b86d6f37a513e5b74ec63767..c6bc83cffc3731de8a5912fff6bc6c6898f1c770 100644
--- a/test/language/literals/string/7.8.4-25-s.js
+++ b/test/language/literals/string/7.8.4-25-s.js
@@ -5,18 +5,9 @@
 es5id: 7.8.4-25-s
 description: An OctalEscapeSequence is not allowed in a String under Strict Mode
 flags: [onlyStrict]
-includes: [runTestCase.js]
 ---*/
 
-function testcase()
-{
-  try 
-  {
-    eval('var x = "\\106";');
-    return false;
-  }
-  catch (e) {
-    return (e instanceof SyntaxError);
-  }
-}
-runTestCase(testcase);
+
+assert.throws(SyntaxError, function() {
+    eval('var x = "\\106";');
+});
diff --git a/test/language/literals/string/7.8.4-26-s.js b/test/language/literals/string/7.8.4-26-s.js
index 9299663fb6cdcede4fe33c77074e2038ffc87d9b..a350166d7a0886ab55f2a0b2208791a93d51ae9d 100644
--- a/test/language/literals/string/7.8.4-26-s.js
+++ b/test/language/literals/string/7.8.4-26-s.js
@@ -5,18 +5,9 @@
 es5id: 7.8.4-26-s
 description: An OctalEscapeSequence is not allowed in a String under Strict Mode
 flags: [onlyStrict]
-includes: [runTestCase.js]
 ---*/
 
-function testcase()
-{
-  try 
-  {
-    eval('var x = "\\207";');
-    return false;
-  }
-  catch (e) {
-    return (e instanceof SyntaxError);
-  }
-}
-runTestCase(testcase);
+
+assert.throws(SyntaxError, function() {
+    eval('var x = "\\207";');
+});
diff --git a/test/language/literals/string/7.8.4-27-s.js b/test/language/literals/string/7.8.4-27-s.js
index ff8ab93d8d3e4e5a1f687a4820f0813762fc1283..9a1c6ad828ecb58ef67e203288629b4476066b04 100644
--- a/test/language/literals/string/7.8.4-27-s.js
+++ b/test/language/literals/string/7.8.4-27-s.js
@@ -5,18 +5,9 @@
 es5id: 7.8.4-27-s
 description: An OctalEscapeSequence is not allowed in a String under Strict Mode
 flags: [onlyStrict]
-includes: [runTestCase.js]
 ---*/
 
-function testcase()
-{
-  try 
-  {
-    eval('var x = "\\377";');
-    return false;
-  }
-  catch (e) {
-    return (e instanceof SyntaxError);
-  }
-}
-runTestCase(testcase);
+
+assert.throws(SyntaxError, function() {
+    eval('var x = "\\377";');
+});
diff --git a/test/language/literals/string/7.8.4-28-s.js b/test/language/literals/string/7.8.4-28-s.js
index 1a1175ece7c4e4a7f54d76ad6856e358d6193697..c0729ad57319f91f6180c746f4b9dc6a89cea631 100644
--- a/test/language/literals/string/7.8.4-28-s.js
+++ b/test/language/literals/string/7.8.4-28-s.js
@@ -5,18 +5,9 @@
 es5id: 7.8.4-28-s
 description: An OctalEscapeSequence is not allowed in a String under Strict Mode
 flags: [onlyStrict]
-includes: [runTestCase.js]
 ---*/
 
-function testcase()
-{
-  try 
-  {
-    eval('var x = "\\376";');
-    return false;
-  }
-  catch (e) {
-    return (e instanceof SyntaxError);
-  }
-}
-runTestCase(testcase);
+
+assert.throws(SyntaxError, function() {
+    eval('var x = "\\376";');
+});
diff --git a/test/language/literals/string/7.8.4-29-s.js b/test/language/literals/string/7.8.4-29-s.js
index 1814443ef8cc09c585fded6826bc39d2e2285850..e0ef1906ac24d16288b70e63f815907d6deae5c8 100644
--- a/test/language/literals/string/7.8.4-29-s.js
+++ b/test/language/literals/string/7.8.4-29-s.js
@@ -5,18 +5,9 @@
 es5id: 7.8.4-29-s
 description: An OctalEscapeSequence is not allowed in a String under Strict Mode
 flags: [onlyStrict]
-includes: [runTestCase.js]
 ---*/
 
-function testcase()
-{
-  try 
-  {
-    eval('var x = "\\3760";');
-    return false;
-  }
-  catch (e) {
-    return (e instanceof SyntaxError);
-  }
-}
-runTestCase(testcase);
+
+assert.throws(SyntaxError, function() {
+    eval('var x = "\\3760";');
+});
diff --git a/test/language/literals/string/7.8.4-3-s.js b/test/language/literals/string/7.8.4-3-s.js
index 0b8906e0ae4bffbc9180209d23587a25b7990521..7c37c0e242488b9d2978507148f4f87e2f3668e1 100644
--- a/test/language/literals/string/7.8.4-3-s.js
+++ b/test/language/literals/string/7.8.4-3-s.js
@@ -5,18 +5,9 @@
 es5id: 7.8.4-3-s
 description: An OctalEscapeSequence is not allowed in a String under Strict Mode
 flags: [onlyStrict]
-includes: [runTestCase.js]
 ---*/
 
-function testcase()
-{
-  try 
-  {
-    eval('var x = "a\\4";');
-    return false;
-  }
-  catch (e) {
-    return (e instanceof SyntaxError);
-  }
- }
-runTestCase(testcase);
+
+assert.throws(SyntaxError, function() {
+    eval('var x = "a\\4";');
+});
diff --git a/test/language/literals/string/7.8.4-30-s.js b/test/language/literals/string/7.8.4-30-s.js
index 6c8069c3e5f66f798f5a41586b698f66d038b539..3d9c1debbaaac74881a359c341071b52d29a2e21 100644
--- a/test/language/literals/string/7.8.4-30-s.js
+++ b/test/language/literals/string/7.8.4-30-s.js
@@ -5,18 +5,9 @@
 es5id: 7.8.4-30-s
 description: An OctalEscapeSequence is not allowed in a String under Strict Mode
 flags: [onlyStrict]
-includes: [runTestCase.js]
 ---*/
 
-function testcase()
-{
-  try 
-  {
-    eval('var x = "\\' + '1";');
-    return false;
-  }
-  catch (e) {
-    return (e instanceof SyntaxError);
-  }
- }
-runTestCase(testcase);
+
+assert.throws(SyntaxError, function() {
+    eval('var x = "\\' + '1";');
+});
diff --git a/test/language/literals/string/7.8.4-31-s.js b/test/language/literals/string/7.8.4-31-s.js
index 6dcd4a2917c8fe71abeb0abaa067f17a0a5ca7f6..f4c3a2fc238802f5ee4996d6064dac29488169b9 100644
--- a/test/language/literals/string/7.8.4-31-s.js
+++ b/test/language/literals/string/7.8.4-31-s.js
@@ -5,18 +5,9 @@
 es5id: 7.8.4-31-s
 description: An OctalEscapeSequence is not allowed in a String under Strict Mode
 flags: [onlyStrict]
-includes: [runTestCase.js]
 ---*/
 
-function testcase()
-{
-  try 
-  {
-    eval('var x = "\\" + "1";');
-    return false;
-  }
-  catch (e) {
-    return (e instanceof SyntaxError);
-  }
- }
-runTestCase(testcase);
+
+assert.throws(SyntaxError, function() {
+    eval('var x = "\\" + "1";');
+});
diff --git a/test/language/literals/string/7.8.4-32-s.js b/test/language/literals/string/7.8.4-32-s.js
index 7835690bd5b485f96f982a98c675008803c3574b..763452a6409f07e3034a4557d418aaf67e46b554 100644
--- a/test/language/literals/string/7.8.4-32-s.js
+++ b/test/language/literals/string/7.8.4-32-s.js
@@ -7,18 +7,9 @@ description: >
     Two OctalEscapeSequences in a String are not allowed in a String
     under Strict Mode
 flags: [onlyStrict]
-includes: [runTestCase.js]
 ---*/
 
-function testcase()
-{
-  try 
-  {
-    eval('var x = "\\1\\1";');
-    return false;
-  }
-  catch (e) {
-    return (e instanceof SyntaxError);
-  }
- }
-runTestCase(testcase);
+
+assert.throws(SyntaxError, function() {
+    eval('var x = "\\1\\1";');
+});
diff --git a/test/language/literals/string/7.8.4-33-s.js b/test/language/literals/string/7.8.4-33-s.js
index d7c4ab29e1ffecba096a5caee8c1078efe90363b..dca45c76437662f98c6517a129c38fd89ffca69c 100644
--- a/test/language/literals/string/7.8.4-33-s.js
+++ b/test/language/literals/string/7.8.4-33-s.js
@@ -7,18 +7,9 @@ description: >
     Three OctalEscapeSequences in a String are not allowed in a String
     under Strict Mode
 flags: [onlyStrict]
-includes: [runTestCase.js]
 ---*/
 
-function testcase()
-{
-  try 
-  {
-    eval('var x = "\\1\\2\\7";');
-    return false;
-  }
-  catch (e) {
-    return (e instanceof SyntaxError);
-  }
- }
-runTestCase(testcase);
+
+assert.throws(SyntaxError, function() {
+    eval('var x = "\\1\\2\\7";');
+});
diff --git a/test/language/literals/string/7.8.4-4-s.js b/test/language/literals/string/7.8.4-4-s.js
index 3286cdc609a68fa921a3d5d8add979fec421c285..f5e6a074d4d999af98fff1acdde3c42679d12428 100644
--- a/test/language/literals/string/7.8.4-4-s.js
+++ b/test/language/literals/string/7.8.4-4-s.js
@@ -5,18 +5,9 @@
 es5id: 7.8.4-4-s
 description: An OctalEscapeSequence is not allowed in a String under Strict Mode
 flags: [onlyStrict]
-includes: [runTestCase.js]
 ---*/
 
-function testcase()
-{
-  try 
-  {
-    eval('var x = "z\\7";');
-    return false;
-  }
-  catch (e) {
-    return (e instanceof SyntaxError);
-  }
- }
-runTestCase(testcase);
+
+assert.throws(SyntaxError, function() {
+    eval('var x = "z\\7";');
+});
diff --git a/test/language/literals/string/7.8.4-5-s.js b/test/language/literals/string/7.8.4-5-s.js
index 5fe162f90b2ba49deba84a8a923263fa1cb1be2e..1461207647eedf112c895ee83faa747c6146063e 100644
--- a/test/language/literals/string/7.8.4-5-s.js
+++ b/test/language/literals/string/7.8.4-5-s.js
@@ -5,18 +5,9 @@
 es5id: 7.8.4-5-s
 description: An OctalEscapeSequence is not allowed in a String under Strict Mode
 flags: [onlyStrict]
-includes: [runTestCase.js]
 ---*/
 
-function testcase()
-{
-  try 
-  {
-    eval('var x = "\\00a";');
-    return false;
-  }
-  catch (e) {
-    return (e instanceof SyntaxError);
-  }
- }
-runTestCase(testcase);
+
+assert.throws(SyntaxError, function() {
+    eval('var x = "\\00a";');
+});
diff --git a/test/language/literals/string/7.8.4-6-s.js b/test/language/literals/string/7.8.4-6-s.js
index a0c59b147c93af549a104955e168b3b551595cfb..0aafa302b8f0e0d2191e7765403f8329d946f258 100644
--- a/test/language/literals/string/7.8.4-6-s.js
+++ b/test/language/literals/string/7.8.4-6-s.js
@@ -5,18 +5,9 @@
 es5id: 7.8.4-6-s
 description: An OctalEscapeSequence is not allowed in a String under Strict Mode
 flags: [onlyStrict]
-includes: [runTestCase.js]
 ---*/
 
-function testcase()
-{
-  try 
-  {
-    eval('var x = "\\01z";');
-    return false;
-  }
-  catch (e) {
-    return (e instanceof SyntaxError);
-  }
- }
-runTestCase(testcase);
+
+assert.throws(SyntaxError, function() {
+    eval('var x = "\\01z";');
+});
diff --git a/test/language/literals/string/7.8.4-7-s.js b/test/language/literals/string/7.8.4-7-s.js
index 31367bb44c9ac8477aa021e0be9ebbc631f25e45..19ddade40364b43b989fdb7dce585bacf8bbc995 100644
--- a/test/language/literals/string/7.8.4-7-s.js
+++ b/test/language/literals/string/7.8.4-7-s.js
@@ -5,18 +5,9 @@
 es5id: 7.8.4-7-s
 description: An OctalEscapeSequence is not allowed in a String under Strict Mode
 flags: [onlyStrict]
-includes: [runTestCase.js]
 ---*/
 
-function testcase()
-{
-  try 
-  {
-    eval('var x = "a\\03z";');
-    return false;
-  }
-  catch (e) {
-    return (e instanceof SyntaxError);
-  }
- }
-runTestCase(testcase);
+
+assert.throws(SyntaxError, function() {
+    eval('var x = "a\\03z";');
+});
diff --git a/test/language/literals/string/7.8.4-8-s.js b/test/language/literals/string/7.8.4-8-s.js
index aee66238a53102cb2e254b5fb0494fea0e431881..c1b0ce4e1f70cfdb282eb07061e7615cb19c3db9 100644
--- a/test/language/literals/string/7.8.4-8-s.js
+++ b/test/language/literals/string/7.8.4-8-s.js
@@ -5,18 +5,9 @@
 es5id: 7.8.4-8-s
 description: An OctalEscapeSequence is not allowed in a String under Strict Mode
 flags: [onlyStrict]
-includes: [runTestCase.js]
 ---*/
 
-function testcase()
-{
-  try 
-  {
-    eval('var x = " \\06";');
-    return false;
-  }
-  catch (e) {
-    return (e instanceof SyntaxError);
-  }
- }
-runTestCase(testcase);
+
+assert.throws(SyntaxError, function() {
+    eval('var x = " \\06";');
+});
diff --git a/test/language/literals/string/7.8.4-9-s.js b/test/language/literals/string/7.8.4-9-s.js
index 3697a5f4dee432806c8aa3334be85175973a1cd2..6c491d01165460af52f92706ff1985876966f57b 100644
--- a/test/language/literals/string/7.8.4-9-s.js
+++ b/test/language/literals/string/7.8.4-9-s.js
@@ -5,18 +5,9 @@
 es5id: 7.8.4-9-s
 description: An OctalEscapeSequence is not allowed in a String under Strict Mode
 flags: [onlyStrict]
-includes: [runTestCase.js]
 ---*/
 
-function testcase()
-{
-  try 
-  {
-    eval('var x = "\\07 ";');
-    return false;
-  }
-  catch (e) {
-    return (e instanceof SyntaxError);
-  }
- }
-runTestCase(testcase);
+
+assert.throws(SyntaxError, function() {
+    eval('var x = "\\07 ";');
+});
diff --git a/test/language/statements/block/12.1-1.js b/test/language/statements/block/12.1-1.js
index 5655c14fb49581ecb8c34ca704912d22daf8747e..0f1ddd02375f497b9a7b9067d45586ab894b2fe8 100644
--- a/test/language/statements/block/12.1-1.js
+++ b/test/language/statements/block/12.1-1.js
@@ -4,15 +4,9 @@
 /*---
 es5id: 12.1-1
 description: "12.1 - block '{ StatementListopt };' is not allowed: try-catch"
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
-        try {
+
+assert.throws(SyntaxError, function() {
             eval("try{};catch(){}");
-            return false;
-        } catch (e) {
-            return e instanceof SyntaxError;
-        }
-    }
-runTestCase(testcase);
+});
diff --git a/test/language/statements/block/12.1-2.js b/test/language/statements/block/12.1-2.js
index 3e402038510b185fe2c8ef5449258d72ec44ba68..b0b41000c48df7a8467f0de6464ecb1258b92bc1 100644
--- a/test/language/statements/block/12.1-2.js
+++ b/test/language/statements/block/12.1-2.js
@@ -6,15 +6,9 @@ es5id: 12.1-2
 description: >
     12.1 - block '{ StatementListopt };' is not allowed:
     try-catch-finally
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
-        try {
+
+assert.throws(SyntaxError, function() {
             eval("try{};catch{};finally{}");
-            return false;
-        } catch (e) {
-            return e instanceof SyntaxError;
-        }
-    }
-runTestCase(testcase);
+});
diff --git a/test/language/statements/block/12.1-3.js b/test/language/statements/block/12.1-3.js
index ad2b8d8411958ebe6a92537d080b95cd9cee0c71..a7fb97e72ef2f7d49dcf43d7f531b6f733c8b4a6 100644
--- a/test/language/statements/block/12.1-3.js
+++ b/test/language/statements/block/12.1-3.js
@@ -4,15 +4,9 @@
 /*---
 es5id: 12.1-3
 description: "12.1 - block '{ StatementListopt };' is not allowed: try-finally"
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
-        try {
+
+assert.throws(SyntaxError, function() {
             eval("try{};finally{}");
-            return false;
-        } catch (e) {
-            return e instanceof SyntaxError;
-        }
-    }
-runTestCase(testcase);
+});
diff --git a/test/language/statements/block/12.1-4.js b/test/language/statements/block/12.1-4.js
index b7284151fad615bcc3c697d9cae77ee216735acc..bf130e45941a258e68c436ca3be88424121feeda 100644
--- a/test/language/statements/block/12.1-4.js
+++ b/test/language/statements/block/12.1-4.js
@@ -4,15 +4,9 @@
 /*---
 es5id: 12.1-4
 description: "12.1 - block '{ StatementListopt };' is not allowed: if-else"
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
-        try {
+
+assert.throws(SyntaxError, function() {
             eval("if{};else{}");
-            return false;
-        } catch (e) {
-            return e instanceof SyntaxError;
-        }
-    }
-runTestCase(testcase);
+});
diff --git a/test/language/statements/block/12.1-5.js b/test/language/statements/block/12.1-5.js
index 908ddcda1ace2bca208f95650c557338b50332d9..2ac6f4608547ad88c71f3b7aa71e8ab65a2eb256 100644
--- a/test/language/statements/block/12.1-5.js
+++ b/test/language/statements/block/12.1-5.js
@@ -4,15 +4,9 @@
 /*---
 es5id: 12.1-5
 description: "12.1 - block '{ StatementListopt };' is not allowed: if-else-if"
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
-        try {
+
+assert.throws(SyntaxError, function() {
             eval("if{};else if{}");
-            return false;
-        } catch (e) {
-            return e instanceof SyntaxError;
-        }
-    }
-runTestCase(testcase);
+});
diff --git a/test/language/statements/block/12.1-6.js b/test/language/statements/block/12.1-6.js
index f46fd216958230ea1cf2e988b88ca3921789931c..deeffa17105bde5db3e60884fc5a39b22c29d7aa 100644
--- a/test/language/statements/block/12.1-6.js
+++ b/test/language/statements/block/12.1-6.js
@@ -6,15 +6,9 @@ es5id: 12.1-6
 description: >
     12.1 - block '{ StatementListopt };' is not allowed:
     if-else-if-else
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
-        try {
+
+assert.throws(SyntaxError, function() {
             eval("if{};else if{};else{}");
-            return false;
-        } catch (e) {
-            return e instanceof SyntaxError;
-        }
-    }
-runTestCase(testcase);
+});
diff --git a/test/language/statements/block/12.1-7.js b/test/language/statements/block/12.1-7.js
index c251e8f930c125988cf5752e282592462e367b0d..ee5c6acdfcc1b011d656f2989e49e590ae7a71fe 100644
--- a/test/language/statements/block/12.1-7.js
+++ b/test/language/statements/block/12.1-7.js
@@ -4,15 +4,9 @@
 /*---
 es5id: 12.1-7
 description: "12.1 - block '{ StatementListopt };' is not allowed: do-while"
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
-        try {
+
+assert.throws(SyntaxError, function() {
             eval("do{};while()");
-            return false;
-        } catch (e) {
-            return e instanceof SyntaxError;
-        }
-    }
-runTestCase(testcase);
+});
diff --git a/test/language/statements/function/13.0-1.js b/test/language/statements/function/13.0-1.js
index 7e0e308ce07d733fac9731e552190155d82b1d88..33b5fd66e84d0e06049f5503c681a976e6431347 100644
--- a/test/language/statements/function/13.0-1.js
+++ b/test/language/statements/function/13.0-1.js
@@ -6,15 +6,9 @@ es5id: 13.0-1
 description: >
     13.0 - multiple names in one function declaration is not allowed,
     two function names
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
-        try {
+
+assert.throws(SyntaxError, function() {
             eval("function x, y() {}");
-            return false;
-        } catch (e) {
-            return e instanceof SyntaxError;
-        }
-    }
-runTestCase(testcase);
+});
diff --git a/test/language/statements/function/13.0-10-s.js b/test/language/statements/function/13.0-10-s.js
index 9368a83bc1378bc8ece9d0093326e563050a7728..5964e461f13c97e0e0a17298c99b4125d07936cb 100644
--- a/test/language/statements/function/13.0-10-s.js
+++ b/test/language/statements/function/13.0-10-s.js
@@ -11,11 +11,8 @@ description: >
     the code of this FunctionBody with an inner function contains a
     Use Strict Directive
 flags: [noStrict]
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
-
         function _13_0_10_fun() {
             function _13_0_10_inner() {
                 "use strict";
@@ -23,11 +20,6 @@ function testcase() {
             }
             _13_0_10_inner();
         };
-        try {
+assert.throws(SyntaxError, function() {
             _13_0_10_fun();
-            return false;
-        } catch (e) {
-            return e instanceof SyntaxError;
-        }
-    }
-runTestCase(testcase);
+});
diff --git a/test/language/statements/function/13.0-11-s.js b/test/language/statements/function/13.0-11-s.js
index 5686b6e1b35bca2c08ae12ac98fb2f2648a6bb28..5a7684a8227f18284cb36311ddf8901bb687698a 100644
--- a/test/language/statements/function/13.0-11-s.js
+++ b/test/language/statements/function/13.0-11-s.js
@@ -11,11 +11,8 @@ description: >
     the code of this FunctionBody with an inner function which is in
     strict mode
 flags: [noStrict]
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
-
         function _13_0_11_fun() {
             "use strict";
             function _13_0_11_inner() {
@@ -23,11 +20,6 @@ function testcase() {
             }
             _13_0_11_inner();
         };
-        try {
+assert.throws(SyntaxError, function() {
             _13_0_11_fun();
-            return false;
-        } catch (e) {
-            return e instanceof SyntaxError;
-        }
-    }
-runTestCase(testcase);
+});
diff --git a/test/language/statements/function/13.0-13-s.js b/test/language/statements/function/13.0-13-s.js
index 0615fe02015ae3b8f3154a3f79e52a365d7fe173..d5f73e2c508b69c6cd52e5bbcb9cf78f05415435 100644
--- a/test/language/statements/function/13.0-13-s.js
+++ b/test/language/statements/function/13.0-13-s.js
@@ -11,16 +11,9 @@ description: >
     the function body of a Function constructor begins with a Strict
     Directive
 flags: [noStrict]
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
        
-        try {
+assert.throws(SyntaxError, function() {
             eval("var _13_0_13_fun = new Function(\" \", \"'use strict'; eval = 42;\"); _13_0_13_fun();");
-            return false;
-        } catch (e) {
-            return e instanceof SyntaxError;
-        }
-    }
-runTestCase(testcase);
+});
diff --git a/test/language/statements/function/13.0-14-s.js b/test/language/statements/function/13.0-14-s.js
index 22bcc0d763745d1da3bdf35a8d3d17f6c7e793a9..5a518430ab661d231f8da7f3ee26ea4fb914c51e 100644
--- a/test/language/statements/function/13.0-14-s.js
+++ b/test/language/statements/function/13.0-14-s.js
@@ -11,17 +11,10 @@ description: >
     the function body of a Function constructor contains a Strict
     Directive
 flags: [noStrict]
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
 
-        try {
+assert.throws(SyntaxError, function() {
             var _13_0_14_fun = new Function(" ", "'use strict'; eval = 42; ");
             _13_0_14_fun();
-            return false;
-        } catch (e) {
-            return e instanceof SyntaxError;
-        }
-    }
-runTestCase(testcase);
+});
diff --git a/test/language/statements/function/13.0-15-s.js b/test/language/statements/function/13.0-15-s.js
index 728dcb034e6791eeeedf5d6cafa4b6191001c3d3..6281c22c3874eefa0679dd533c76bb81c40f82ae 100644
--- a/test/language/statements/function/13.0-15-s.js
+++ b/test/language/statements/function/13.0-15-s.js
@@ -11,17 +11,10 @@ description: >
     a FunctionDeclaration is contained in strict mode code within eval
     code
 flags: [noStrict]
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
 
-        try {
+assert.throws(SyntaxError, function() {
             eval("'use strict'; function _13_0_15_fun() {eval = 42;};");
             _13_0_15_fun();
-            return false;
-        } catch (e) {
-            return e instanceof SyntaxError;
-        }
-    }
-runTestCase(testcase);
+});
diff --git a/test/language/statements/function/13.0-16-s.js b/test/language/statements/function/13.0-16-s.js
index 3eefb46e3256244938a8b8e1044a36654cbf8a5f..c825848e2c35e9afad12a6a28aa565270bef6f92 100644
--- a/test/language/statements/function/13.0-16-s.js
+++ b/test/language/statements/function/13.0-16-s.js
@@ -11,17 +11,10 @@ description: >
     a FunctionExpression is contained in strict mode code within eval
     code
 flags: [noStrict]
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
 
-        try {
+assert.throws(SyntaxError, function() {
             eval("'use strict'; var _13_0_16_fun = function () {eval = 42;};");
             _13_0_16_fun();
-            return false;
-        } catch (e) {
-            return e instanceof SyntaxError;
-        }
-    }
-runTestCase(testcase);
+});
diff --git a/test/language/statements/function/13.0-2.js b/test/language/statements/function/13.0-2.js
index f2baa5a68d79e2ac9638239a936a33dd00d63ef3..7a3712f061c747daeea46ae2ab4433280bfd8fe5 100644
--- a/test/language/statements/function/13.0-2.js
+++ b/test/language/statements/function/13.0-2.js
@@ -6,15 +6,9 @@ es5id: 13.0-2
 description: >
     13.0 - multiple names in one function declaration is not allowed,
     three function names
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
-        try {
+
+assert.throws(SyntaxError, function() {
             eval("function x,y,z(){}");
-            return false;
-        } catch (e) {
-            return e instanceof SyntaxError;
-        }
-    }
-runTestCase(testcase);
+});
diff --git a/test/language/statements/function/13.0-3.js b/test/language/statements/function/13.0-3.js
index 7ffb99d438d79ed361304974d8f048ddd8e4b018..f4eab6a1c8b8819b5c064f0046d2017489fbb2b8 100644
--- a/test/language/statements/function/13.0-3.js
+++ b/test/language/statements/function/13.0-3.js
@@ -6,16 +6,9 @@ es5id: 13.0-3
 description: >
     13.0 - property names in function definition is not allowed, add a
     new property into object
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
         var obj = {};
-        try {
+assert.throws(SyntaxError, function() {
             eval("function obj.tt() {};");
-            return false;
-        } catch (e) {
-            return e instanceof SyntaxError;
-        }
-    }
-runTestCase(testcase);
+});
diff --git a/test/language/statements/function/13.0-4.js b/test/language/statements/function/13.0-4.js
index 56225bf7d8a80a062b9453dd7ab901f5c203edd5..ace2f52e131e7ead1ad23588bf456548a7e0f045 100644
--- a/test/language/statements/function/13.0-4.js
+++ b/test/language/statements/function/13.0-4.js
@@ -6,17 +6,10 @@ es5id: 13.0-4
 description: >
     13.0 - multiple names in one function declaration is not allowed,
     add a new property into a property which is a object
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
         var obj = {};
         obj.tt = { len: 10 };
-        try {
+assert.throws(SyntaxError, function() {
             eval("function obj.tt.ss() {};");
-            return false;
-        } catch (e) {
-            return e instanceof SyntaxError;
-        }
-    }
-runTestCase(testcase);
+});
diff --git a/test/language/statements/function/13.0-7-s.js b/test/language/statements/function/13.0-7-s.js
index 0c6ae6cfd984cf1b83d309eac23a38a3afba3a5b..9e280a909ad7c7c2d6a93eaf1e22dc1cd1c1536b 100644
--- a/test/language/statements/function/13.0-7-s.js
+++ b/test/language/statements/function/13.0-7-s.js
@@ -11,17 +11,10 @@ description: >
     the code of this FunctionDeclaration is contained in non-strict
     mode but the call to eval is a direct call in strict mode code
 flags: [noStrict]
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
 
-        try {
+assert.throws(SyntaxError, function() {
             eval("'use strict'; function _13_0_7_fun() {eval = 42;};");
             _13_0_7_fun();
-            return false;
-        } catch (e) {
-            return e instanceof SyntaxError;
-        }
-    }
-runTestCase(testcase);
+});
diff --git a/test/language/statements/function/13.0-9-s.js b/test/language/statements/function/13.0-9-s.js
index c2b1bf20f911478bfcb0d2432d7712767cfc5d1d..15145ababaae84a3a5c66cf067b8e6c8a45186fa 100644
--- a/test/language/statements/function/13.0-9-s.js
+++ b/test/language/statements/function/13.0-9-s.js
@@ -11,19 +11,12 @@ description: >
     a FunctionDeclaration that is contained in strict mode code has an
     inner function
 flags: [onlyStrict]
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
         var _13_0_9_fun = function () {
             function _13_0_9_inner() { eval("eval = 42;"); }
             _13_0_9_inner();
         };
-        try {
+assert.throws(SyntaxError, function() {
             _13_0_9_fun();
-            return false;
-        } catch (e) {
-            return e instanceof SyntaxError;
-        }
-    }
-runTestCase(testcase);
+});
diff --git a/test/language/statements/function/13.1-1-s.js b/test/language/statements/function/13.1-1-s.js
index 077414ba0c78d0f09d5298a51d12829754c70034..cb5ad0aea6bc768a0ef99576d660d6630f64efef 100644
--- a/test/language/statements/function/13.1-1-s.js
+++ b/test/language/statements/function/13.1-1-s.js
@@ -12,15 +12,9 @@ description: >
     appears within a FormalParameterList of a strict mode
     FunctionDeclaration
 flags: [onlyStrict]
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
-        try {
+
+assert.throws(SyntaxError, function() {
             eval("function _13_1_1_fun(eval) { }");
-            return false;
-        } catch (e) {
-            return e instanceof SyntaxError;
-        }
-    }
-runTestCase(testcase);
+});
diff --git a/test/language/statements/function/13.1-10-s.js b/test/language/statements/function/13.1-10-s.js
index 41acf78913f8683b83b6e924921bc9043fb4cb68..a57ddb8efd157a085ca01713aa5aa096560f9371 100644
--- a/test/language/statements/function/13.1-10-s.js
+++ b/test/language/statements/function/13.1-10-s.js
@@ -12,15 +12,9 @@ description: >
     'strict mode' using a FunctionExpression and the function has
     three identical parameters
 flags: [onlyStrict]
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
-        try {
+
+assert.throws(SyntaxError, function() {
             eval("var _13_1_10_fun = function (param, param, param) { };")
-            return false;
-        } catch (e) {
-            return e instanceof SyntaxError;
-        }
-    }
-runTestCase(testcase);
+});
diff --git a/test/language/statements/function/13.1-11-s.js b/test/language/statements/function/13.1-11-s.js
index 4d64d256d2e81bdefdde37b856ccfda933333a2b..f518e3e3ec61762fd94744040dd9e1318d15ece5 100644
--- a/test/language/statements/function/13.1-11-s.js
+++ b/test/language/statements/function/13.1-11-s.js
@@ -7,15 +7,9 @@ description: >
     StrictMode - SyntaxError is thrown if 'eval' occurs as the
     function name of a FunctionDeclaration in strict mode
 flags: [onlyStrict]
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
-        try {
+
+assert.throws(SyntaxError, function() {
             eval("function eval() { };")
-            return false;
-        } catch (e) {
-            return e instanceof SyntaxError;
-        }
-    }
-runTestCase(testcase);
+});
diff --git a/test/language/statements/function/13.1-12-s.js b/test/language/statements/function/13.1-12-s.js
index 8f0e24d6f18ac5f09c161defb6b21edbb83febc9..9ab5a3d72769c8684bac882fed0fe9596c92c0c5 100644
--- a/test/language/statements/function/13.1-12-s.js
+++ b/test/language/statements/function/13.1-12-s.js
@@ -7,17 +7,9 @@ description: >
     StrictMode - SyntaxError is thrown if 'eval' occurs as the
     Identifier of a FunctionExpression in strict mode
 flags: [onlyStrict]
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
         var _13_1_12_s = {};
-
-        try {
+assert.throws(SyntaxError, function() {
             eval("_13_1_12_s.x = function eval() {};");
-            return false;
-        } catch (e) {
-            return e instanceof SyntaxError;
-        }
-    }
-runTestCase(testcase);
+});
diff --git a/test/language/statements/function/13.1-13-s.js b/test/language/statements/function/13.1-13-s.js
index 290904800b7115b56c873a9d64253a6a8b1d1b25..ca4217170489b89667ea67c6e193295f3467e9b0 100644
--- a/test/language/statements/function/13.1-13-s.js
+++ b/test/language/statements/function/13.1-13-s.js
@@ -7,15 +7,9 @@ description: >
     StrictMode - SyntaxError is thrown if 'arguments' occurs as the
     function name of a FunctionDeclaration in strict mode
 flags: [onlyStrict]
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
-        try {
+
+assert.throws(SyntaxError, function() {
             eval("function arguments() { };")
-            return false;
-        } catch (e) {
-            return e instanceof SyntaxError;
-        }
-    }
-runTestCase(testcase);
+});
diff --git a/test/language/statements/function/13.1-14-s.js b/test/language/statements/function/13.1-14-s.js
index d639eb202c58adf801ed9baceb0dc6caca836e97..902419038bdfb71a90541aa91e984d5bf806c915 100644
--- a/test/language/statements/function/13.1-14-s.js
+++ b/test/language/statements/function/13.1-14-s.js
@@ -7,17 +7,9 @@ description: >
     StrictMode - SyntaxError is thrown if 'arguments' occurs as the
     Identifier of a FunctionExpression in strict mode
 flags: [onlyStrict]
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
         var _13_1_14_s = {};
-
-        try {
+assert.throws(SyntaxError, function() {
             eval("_13_1_14_s.x = function arguments() {};");
-            return false;
-        } catch (e) {
-            return e instanceof SyntaxError;
-        }
-    }
-runTestCase(testcase);
+});
diff --git a/test/language/statements/function/13.1-15-s.js b/test/language/statements/function/13.1-15-s.js
index 1ee28524d8eb1782c865ed178c6d5623ecf2437e..6d47b948d793c5e4e10ba1549efdd9805f47b610 100644
--- a/test/language/statements/function/13.1-15-s.js
+++ b/test/language/statements/function/13.1-15-s.js
@@ -12,16 +12,9 @@ description: >
     appears within a FormalParameterList of a strict mode
     FunctionDeclaration in strict eval code
 flags: [noStrict]
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
 
-        try {
+assert.throws(SyntaxError, function() {
             eval("'use strict';function _13_1_15_fun(eval) { }");
-            return false;
-        } catch (e) {
-            return e instanceof SyntaxError;
-        }
-    }
-runTestCase(testcase);
+});
diff --git a/test/language/statements/function/13.1-16-s.js b/test/language/statements/function/13.1-16-s.js
index 0522c9b1eb4e31c5e243bda90dd287ae178f8f2e..a2e2c4999db130d24e60f32457967edc71c90863 100644
--- a/test/language/statements/function/13.1-16-s.js
+++ b/test/language/statements/function/13.1-16-s.js
@@ -12,16 +12,9 @@ description: >
     appears within a FormalParameterList of a strict mode
     FunctionDeclaration when FuctionBody is strict code
 flags: [noStrict]
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
 
-        try {
+assert.throws(SyntaxError, function() {
             eval("function _13_1_16_fun(eval) { 'use strict'; }");
-            return false;
-        } catch (e) {
-            return e instanceof SyntaxError;
-        }
-    }
-runTestCase(testcase);
+});
diff --git a/test/language/statements/function/13.1-17-s.js b/test/language/statements/function/13.1-17-s.js
index 6d1dd8dcd411c41432a90e412a15a23768ec866f..9c08d093410502df7d4ba710079a98f1f9f15daa 100644
--- a/test/language/statements/function/13.1-17-s.js
+++ b/test/language/statements/function/13.1-17-s.js
@@ -12,16 +12,9 @@ description: >
     appears within a FormalParameterList of a strict mode
     FunctionExpression in strict eval code
 flags: [noStrict]
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
 
-        try {
+assert.throws(SyntaxError, function() {
             eval("'use strict'; var _13_1_17_fun = function (eval) { }");
-            return false;
-        } catch (e) {
-            return e instanceof SyntaxError;
-        }
-    }
-runTestCase(testcase);
+});
diff --git a/test/language/statements/function/13.1-18-s.js b/test/language/statements/function/13.1-18-s.js
index 92a0c07fdf9cc21dea25da9320eb61bcc58067fe..1ff8d869974b76dd09d18fece188628899c5b467 100644
--- a/test/language/statements/function/13.1-18-s.js
+++ b/test/language/statements/function/13.1-18-s.js
@@ -12,16 +12,9 @@ description: >
     appears within a FormalParameterList of a strict mode
     FunctionExpression when FuctionBody is strict code
 flags: [noStrict]
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
 
-        try {
+assert.throws(SyntaxError, function() {
             eval("var _13_1_18_fun = function (eval) { 'use strict'; }");
-            return false;
-        } catch (e) {
-            return e instanceof SyntaxError;
-        }
-    }
-runTestCase(testcase);
+});
diff --git a/test/language/statements/function/13.1-19-s.js b/test/language/statements/function/13.1-19-s.js
index 5cbf661565cb693232f6e7b5dd86dfa207084ea3..3dce5196fe47dbf86e2e4f57a8866a0f843ec4f0 100644
--- a/test/language/statements/function/13.1-19-s.js
+++ b/test/language/statements/function/13.1-19-s.js
@@ -12,16 +12,9 @@ description: >
     appears within a FormalParameterList of a strict mode
     FunctionDeclaration in strict eval code
 flags: [noStrict]
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
 
-        try {
+assert.throws(SyntaxError, function() {
             eval("'use strict';function _13_1_19_fun(arguments) { }");
-            return false;
-        } catch (e) {
-            return e instanceof SyntaxError;
-        }
-    }
-runTestCase(testcase);
+});
diff --git a/test/language/statements/function/13.1-2-s.js b/test/language/statements/function/13.1-2-s.js
index dfda3645f5ccf495543e9fdc393cc50640bc8ea4..07a657bd378abe45baf57687d313033599d78101 100644
--- a/test/language/statements/function/13.1-2-s.js
+++ b/test/language/statements/function/13.1-2-s.js
@@ -12,15 +12,9 @@ description: >
     appears within a FormalParameterList of a strict mode
     FunctionExpression
 flags: [onlyStrict]
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
-        try {
+
+assert.throws(SyntaxError, function() {
             eval("var _13_1_2_fun = function (eval) { }");
-            return false;
-        } catch (e) {
-            return e instanceof SyntaxError;
-        }
-    }
-runTestCase(testcase);
+});
diff --git a/test/language/statements/function/13.1-20-s.js b/test/language/statements/function/13.1-20-s.js
index 44265dbb9936e3d2578a8dff9888e2c44ba2ca91..8c57d7a6225ba2d7e3feef658455ff7d8a49f479 100644
--- a/test/language/statements/function/13.1-20-s.js
+++ b/test/language/statements/function/13.1-20-s.js
@@ -12,16 +12,9 @@ description: >
     appears within a FormalParameterList of a strict mode
     FunctionDeclaration when FuctionBody is strict code
 flags: [noStrict]
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
 
-        try {
+assert.throws(SyntaxError, function() {
             eval("function _13_1_20_fun(arguments) { 'use strict'; }");
-            return false;
-        } catch (e) {
-            return e instanceof SyntaxError;
-        }
-    }
-runTestCase(testcase);
+});
diff --git a/test/language/statements/function/13.1-21-s.js b/test/language/statements/function/13.1-21-s.js
index cb4421f62b803ddf360111d1fa2cfec82414ce7a..4e79bace1400429ade77eeda97b4ece6cdc6c53e 100644
--- a/test/language/statements/function/13.1-21-s.js
+++ b/test/language/statements/function/13.1-21-s.js
@@ -12,16 +12,9 @@ description: >
     appears within a FormalParameterList of a strict mode
     FunctionExpression in strict eval code
 flags: [noStrict]
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
 
-        try {
+assert.throws(SyntaxError, function() {
             eval("'use strict'; var _13_1_21_fun = function (arguments) { }");
-            return false;
-        } catch (e) {
-            return e instanceof SyntaxError;
-        }
-    }
-runTestCase(testcase);
+});
diff --git a/test/language/statements/function/13.1-22-s.js b/test/language/statements/function/13.1-22-s.js
index 3243a96f249da56efe4f3f1f3285c26daf76cca2..ac3417cb86b82ffd00b86b59baaaff7cfb46eb71 100644
--- a/test/language/statements/function/13.1-22-s.js
+++ b/test/language/statements/function/13.1-22-s.js
@@ -12,16 +12,9 @@ description: >
     appears within a FormalParameterList of a strict mode
     FunctionExpression when FuctionBody is strict code
 flags: [noStrict]
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
 
-        try {
+assert.throws(SyntaxError, function() {
             eval("var _13_1_22_fun = function (arguments) { 'use strict'; }");
-            return false;
-        } catch (e) {
-            return e instanceof SyntaxError;
-        }
-    }
-runTestCase(testcase);
+});
diff --git a/test/language/statements/function/13.1-23-s.js b/test/language/statements/function/13.1-23-s.js
index fedc7a34288ff77d160f99ffb4e2636e92930f89..36008957f90b9f4236fd5ffe5106118fe2e7c1fd 100644
--- a/test/language/statements/function/13.1-23-s.js
+++ b/test/language/statements/function/13.1-23-s.js
@@ -12,16 +12,9 @@ description: >
     a FunctionDeclaration that is contained in eval strict code and
     the function has two identical parameters
 flags: [noStrict]
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
 
-        try {
+assert.throws(SyntaxError, function() {
             eval("'use strict'; function _13_1_23_fun(param, param) { }");
-            return false;
-        } catch (e) {
-            return e instanceof SyntaxError;
-        }
-    }
-runTestCase(testcase);
+});
diff --git a/test/language/statements/function/13.1-24-s.js b/test/language/statements/function/13.1-24-s.js
index de66d85783567191a1df5dde1b007eb91559c18b..fc459cd93ed978e5ef6de766c5fedb5bb6608933 100644
--- a/test/language/statements/function/13.1-24-s.js
+++ b/test/language/statements/function/13.1-24-s.js
@@ -12,16 +12,9 @@ description: >
     a FunctionDeclaration whose FunctionBody is contained in strict
     code and the function has two identical parameters
 flags: [noStrict]
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
 
-        try {
+assert.throws(SyntaxError, function() {
             eval("function _13_1_24_fun(param, param) { 'use strict'; }");
-            return false;
-        } catch (e) {
-            return e instanceof SyntaxError;
-        }
-    }
-runTestCase(testcase);
+});
diff --git a/test/language/statements/function/13.1-25-s.js b/test/language/statements/function/13.1-25-s.js
index e470eb4ae6c00459bb589da0700055737b863120..7bc1c7b082e9707fc865ef4666b8580cbb174941 100644
--- a/test/language/statements/function/13.1-25-s.js
+++ b/test/language/statements/function/13.1-25-s.js
@@ -13,16 +13,9 @@ description: >
     the function has two identical parameters which are separated by a
     unique parameter name
 flags: [noStrict]
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
 
-        try {
+assert.throws(SyntaxError, function() {
             eval("'use strict'; function _13_1_25_fun(param1, param2, param1) { }");
-            return false;
-        } catch (e) {
-            return e instanceof SyntaxError;
-        }
-    }
-runTestCase(testcase);
+});
diff --git a/test/language/statements/function/13.1-26-s.js b/test/language/statements/function/13.1-26-s.js
index dd16e5f1134f9bf0ece8d349261be1a4eea436af..f44b94490487db803e25f7b3f6fbafef0f3bfb8b 100644
--- a/test/language/statements/function/13.1-26-s.js
+++ b/test/language/statements/function/13.1-26-s.js
@@ -13,16 +13,9 @@ description: >
     code and the function has two identical parameters which are
     separated by a unique parameter name
 flags: [noStrict]
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
 
-        try {
+assert.throws(SyntaxError, function() {
             eval("function _13_1_26_fun(param1, param2, param1) { 'use strict'; }");
-            return false;
-        } catch (e) {
-            return e instanceof SyntaxError;
-        }
-    }
-runTestCase(testcase);
+});
diff --git a/test/language/statements/function/13.1-27-s.js b/test/language/statements/function/13.1-27-s.js
index b9cf0eb5347ca9d5d6cead8c8b1dadfec46b8a1f..3ad0c92061e6d1d6c4dc229a5dba52aba3ff257f 100644
--- a/test/language/statements/function/13.1-27-s.js
+++ b/test/language/statements/function/13.1-27-s.js
@@ -12,16 +12,9 @@ description: >
     a FunctionDeclaration that is contained in eval strict code and
     the function has three identical parameters
 flags: [noStrict]
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
 
-        try {
+assert.throws(SyntaxError, function() {
             eval("'use strict'; function _13_1_27_fun(param, param, param) { }");
-            return false;
-        } catch (e) {
-            return e instanceof SyntaxError;
-        }
-    }
-runTestCase(testcase);
+});
diff --git a/test/language/statements/function/13.1-28-s.js b/test/language/statements/function/13.1-28-s.js
index f87d2d17069a922910f0d654a20a7609ff56b996..61d6e3f31118dad3ab1a8864f26520874557f60d 100644
--- a/test/language/statements/function/13.1-28-s.js
+++ b/test/language/statements/function/13.1-28-s.js
@@ -12,17 +12,9 @@ description: >
     a FunctionDeclaration whose FunctionBody is contained in strict
     code and the function has three identical parameters
 flags: [noStrict]
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
-        
 
-        try {
+assert.throws(SyntaxError, function() {
             eval("function _13_1_28_fun(param, param, param) { 'use strict'; }");
-            return false;
-        } catch (e) {
-            return e instanceof SyntaxError;
-        }
-    }
-runTestCase(testcase);
+});
diff --git a/test/language/statements/function/13.1-29-s.js b/test/language/statements/function/13.1-29-s.js
index 9c0cc7171b307a06ebe2b43a032b20c6de66fbe5..0dd41865e62a04a0f43ddb319f594152d973d167 100644
--- a/test/language/statements/function/13.1-29-s.js
+++ b/test/language/statements/function/13.1-29-s.js
@@ -12,16 +12,9 @@ description: >
     a FunctionExpression that is contained in eval strict code and the
     function has two identical parameters
 flags: [noStrict]
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
 
-        try {
+assert.throws(SyntaxError, function() {
             eval("'use strict'; var _13_1_29_fun = function (param, param) { };");
-            return false;
-        } catch (e) {
-            return e instanceof SyntaxError;
-        }
-    }
-runTestCase(testcase);
+});
diff --git a/test/language/statements/function/13.1-3-s.js b/test/language/statements/function/13.1-3-s.js
index baa9c16c4312fdf349db1063e64c3ad0b3c23ed8..803e5986c2b732e4550d19241df2f098ef2f5b5a 100644
--- a/test/language/statements/function/13.1-3-s.js
+++ b/test/language/statements/function/13.1-3-s.js
@@ -12,15 +12,9 @@ description: >
     appears within a FormalParameterList of a strict mode
     FunctionDeclaration
 flags: [onlyStrict]
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
-        try {
+
+assert.throws(SyntaxError, function() {
             eval("function _13_1_3_fun(arguments) { }");
-            return false;
-        } catch (e) {
-            return e instanceof SyntaxError;
-        }
-    }
-runTestCase(testcase);
+});
diff --git a/test/language/statements/function/13.1-30-s.js b/test/language/statements/function/13.1-30-s.js
index 0fbae1edeb6ed113e1d8b8582d35b762ac03e5f5..d7fa8d644faed7fe3a8fe5eddfb64af99f94d1ad 100644
--- a/test/language/statements/function/13.1-30-s.js
+++ b/test/language/statements/function/13.1-30-s.js
@@ -12,16 +12,9 @@ description: >
     a FunctionExpression whose FunctionBody is contained in strict
     code and the function has two identical parameters
 flags: [noStrict]
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
 
-        try {
+assert.throws(SyntaxError, function() {
             eval("var _13_1_30_fun = function (param, param) { 'use strict'; };");
-            return false;
-        } catch (e) {
-            return e instanceof SyntaxError;
-        }
-    }
-runTestCase(testcase);
+});
diff --git a/test/language/statements/function/13.1-31-s.js b/test/language/statements/function/13.1-31-s.js
index 4aba0e054270a91294d89a0055f0f95e3fdd5902..911588b63330f88da1df8c1e4e2f575c45e8d087 100644
--- a/test/language/statements/function/13.1-31-s.js
+++ b/test/language/statements/function/13.1-31-s.js
@@ -13,16 +13,9 @@ description: >
     function has two identical parameters, which are separated by a
     unique parameter name
 flags: [noStrict]
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
 
-        try {
+assert.throws(SyntaxError, function() {
             eval("'use strict'; var _13_1_31_fun = function (param1, param2, param1) { };");
-            return false;
-        } catch (e) {
-            return e instanceof SyntaxError;
-        }
-    }
-runTestCase(testcase);
+});
diff --git a/test/language/statements/function/13.1-32-s.js b/test/language/statements/function/13.1-32-s.js
index e46f50f783053d53f5c7c6aaaa96033fbbd1101f..486c55391991b7c8c60e7eed30e439991565d742 100644
--- a/test/language/statements/function/13.1-32-s.js
+++ b/test/language/statements/function/13.1-32-s.js
@@ -13,16 +13,9 @@ description: >
     has two identical parameters, which are separated by a unique
     parameter name
 flags: [noStrict]
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
 
-        try {
+assert.throws(SyntaxError, function() {
             eval("var _13_1_32_fun = function (param1, param2, param1) { 'use strict'; };");
-            return false;
-        } catch (e) {
-            return e instanceof SyntaxError;
-        }
-    }
-runTestCase(testcase);
+});
diff --git a/test/language/statements/function/13.1-33-s.js b/test/language/statements/function/13.1-33-s.js
index 3d9b3112872b697716bd5f4ce2bb5191593f253f..cdccca76ad69beed4e7c9ce9fa93873c294f6d91 100644
--- a/test/language/statements/function/13.1-33-s.js
+++ b/test/language/statements/function/13.1-33-s.js
@@ -12,16 +12,9 @@ description: >
     FunctionExpression that is contained in eval strict code and the
     function has three identical parameters
 flags: [noStrict]
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
 
-        try {
+assert.throws(SyntaxError, function() {
             eval("'use strict'; var _13_1_33_fun = function (param, param, param) { };")
-            return false;
-        } catch (e) {
-            return e instanceof SyntaxError;
-        }
-    }
-runTestCase(testcase);
+});
diff --git a/test/language/statements/function/13.1-34-s.js b/test/language/statements/function/13.1-34-s.js
index 4bedc599195743315b679f09e2f9471e7a987808..e3d9c6f400aa9ed202a3528adfee6a201da9af01 100644
--- a/test/language/statements/function/13.1-34-s.js
+++ b/test/language/statements/function/13.1-34-s.js
@@ -11,16 +11,9 @@ description: >
     Strict Mode - SyntaxError is thrown if a function declaration has
     three identical parameters with a strict mode body
 flags: [noStrict]
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
 
-        try {
+assert.throws(SyntaxError, function() {
             eval("var _13_1_34_fun = function (param, param, param) { 'use strict'; };")
-            return false;
-        } catch (e) {
-            return e instanceof SyntaxError;
-        }
-    }
-runTestCase(testcase);
+});
diff --git a/test/language/statements/function/13.1-35-s.js b/test/language/statements/function/13.1-35-s.js
index 53f6bb730d8b7ee8aa2ce0d59e9be82828ac337a..ca9376953a80ca69bf4dabd77112a6c06961c52d 100644
--- a/test/language/statements/function/13.1-35-s.js
+++ b/test/language/statements/function/13.1-35-s.js
@@ -7,16 +7,9 @@ description: >
     StrictMode - SyntaxError is thrown if 'eval' occurs as the
     function name of a FunctionDeclaration in strict eval code
 flags: [noStrict]
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
 
-        try {
+assert.throws(SyntaxError, function() {
             eval("'use strict'; function eval() { };")
-            return false;
-        } catch (e) {
-            return e instanceof SyntaxError;
-        }
-    }
-runTestCase(testcase);
+});
diff --git a/test/language/statements/function/13.1-36-s.js b/test/language/statements/function/13.1-36-s.js
index 0d09fef4e918d8b46b73edc873efe391d83b3c65..ce5c98ec0d880b12f4708613de503042b82df124 100644
--- a/test/language/statements/function/13.1-36-s.js
+++ b/test/language/statements/function/13.1-36-s.js
@@ -8,16 +8,9 @@ description: >
     function name of a FunctionDeclaration whose FunctionBody is in
     strict mode
 flags: [noStrict]
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
 
-        try {
+assert.throws(SyntaxError, function() {
             eval("function eval() { 'use strict'; };")
-            return false;
-        } catch (e) {
-            return e instanceof SyntaxError;
-        }
-    }
-runTestCase(testcase);
+});
diff --git a/test/language/statements/function/13.1-37-s.js b/test/language/statements/function/13.1-37-s.js
index 031782a57bbb3073d4bf1bbdc0f76d339ebecb32..5b2c1db6b4495c1e7788939c109c1deda2e405f2 100644
--- a/test/language/statements/function/13.1-37-s.js
+++ b/test/language/statements/function/13.1-37-s.js
@@ -7,16 +7,9 @@ description: >
     StrictMode - SyntaxError is thrown if 'eval' occurs as the
     Identifier of a FunctionExpression in strict eval code
 flags: [noStrict]
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
         var _13_1_37_s = {};
-        try {
+assert.throws(SyntaxError, function() {
             eval("'use strict'; _13_1_37_s.x = function eval() {};");
-            return false;
-        } catch (e) {
-            return e instanceof SyntaxError;
-        }
-    }
-runTestCase(testcase);
+});
diff --git a/test/language/statements/function/13.1-38-s.js b/test/language/statements/function/13.1-38-s.js
index bc5c1a49e50c2ac302b110e912ecda5e6a940986..ac4db793ddef2f6b14506bb0fbe76b59238e106e 100644
--- a/test/language/statements/function/13.1-38-s.js
+++ b/test/language/statements/function/13.1-38-s.js
@@ -8,16 +8,9 @@ description: >
     Identifier of a FunctionExpression whose FunctionBody is contained
     in strict code
 flags: [noStrict]
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
         var _13_1_38_s = {};
-        try {
+assert.throws(SyntaxError, function() {
             eval("_13_1_38_s.x = function eval() {'use strict'; };");
-            return false;
-        } catch (e) {
-            return e instanceof SyntaxError;
-        }
-    }
-runTestCase(testcase);
+});
diff --git a/test/language/statements/function/13.1-39-s.js b/test/language/statements/function/13.1-39-s.js
index bdbde71c60dadb9852097c091d4de9e6e8b987f8..633be9641d61ce67ccccd5ec54a2405fbe45f726 100644
--- a/test/language/statements/function/13.1-39-s.js
+++ b/test/language/statements/function/13.1-39-s.js
@@ -7,16 +7,9 @@ description: >
     StrictMode - SyntaxError is thrown if 'arguments' occurs as the
     function name of a FunctionDeclaration in strict eval code
 flags: [noStrict]
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
 
-        try {
+assert.throws(SyntaxError, function() {
             eval("'use strict'; function arguments() { };")
-            return false;
-        } catch (e) {
-            return e instanceof SyntaxError;
-        }
-    }
-runTestCase(testcase);
+});
diff --git a/test/language/statements/function/13.1-4-s.js b/test/language/statements/function/13.1-4-s.js
index 71729cf40e262aeff0c17b43a9e875c3b9d1785b..092aaee0df8edd5d963e467a7b16a876b12abb09 100644
--- a/test/language/statements/function/13.1-4-s.js
+++ b/test/language/statements/function/13.1-4-s.js
@@ -12,15 +12,9 @@ description: >
     appears within a FormalParameterList of a strict mode
     FunctionExpression
 flags: [onlyStrict]
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
-        try {
+
+assert.throws(SyntaxError, function() {
             eval("var _13_1_4_fun = function (arguments) { };");
-            return false;
-        } catch (e) {
-            return e instanceof SyntaxError;
-        }
-    }
-runTestCase(testcase);
+});
diff --git a/test/language/statements/function/13.1-40-s.js b/test/language/statements/function/13.1-40-s.js
index d29ce3e5d30b5b9ab51dca77c2a37ad23fe25e18..8c77046075104706bb33379a7b012ea6566f828b 100644
--- a/test/language/statements/function/13.1-40-s.js
+++ b/test/language/statements/function/13.1-40-s.js
@@ -8,16 +8,9 @@ description: >
     Identifier of a FunctionDeclaration whose FunctionBody is
     contained in strict code
 flags: [noStrict]
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
 
-        try {
+assert.throws(SyntaxError, function() {
             eval("function arguments() { 'use strict'; };")
-            return false;
-        } catch (e) {
-            return e instanceof SyntaxError;
-        }
-    }
-runTestCase(testcase);
+});
diff --git a/test/language/statements/function/13.1-41-s.js b/test/language/statements/function/13.1-41-s.js
index f59b4aeb073139d8c1d296b8f46849362c61cb81..a6e246177a4fabb8b3f55447fda333132d7a4b4a 100644
--- a/test/language/statements/function/13.1-41-s.js
+++ b/test/language/statements/function/13.1-41-s.js
@@ -7,16 +7,9 @@ description: >
     StrictMode - SyntaxError is thrown if 'arguments' occurs as the
     Identifier of a FunctionExpression in strict eval code
 flags: [noStrict]
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
         var _13_1_41_s = {};
-        try {
+assert.throws(SyntaxError, function() {
             eval("'use strict'; _13_1_41_s.x = function arguments() {};");
-            return false;
-        } catch (e) {
-            return e instanceof SyntaxError;
-        }
-    }
-runTestCase(testcase);
+});
diff --git a/test/language/statements/function/13.1-42-s.js b/test/language/statements/function/13.1-42-s.js
index eee56516fe60504ffd09cdf3922271a8e26e1120..8e9a3fccb80c0794bb956486969212910c92f0d8 100644
--- a/test/language/statements/function/13.1-42-s.js
+++ b/test/language/statements/function/13.1-42-s.js
@@ -8,16 +8,9 @@ description: >
     Identifier of a FunctionExpression whose FunctionBody is contained
     in strict code
 flags: [noStrict]
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
         var _13_1_42_s = {};
-        try {
+assert.throws(SyntaxError, function() {
             eval("_13_1_42_s.x = function arguments() {'use strict';};");
-            return false;
-        } catch (e) {
-            return e instanceof SyntaxError;
-        }
-    }
-runTestCase(testcase);
+});
diff --git a/test/language/statements/function/13.1-5-s.js b/test/language/statements/function/13.1-5-s.js
index a0dd7d482d53085746f0cacf7a9ff9bd764cb1ad..65a010a6c126a3194f027a3f2281cc96deac3320 100644
--- a/test/language/statements/function/13.1-5-s.js
+++ b/test/language/statements/function/13.1-5-s.js
@@ -12,15 +12,9 @@ description: >
     'strict mode' using a FunctionDeclaration and the function has two
     identical parameters
 flags: [onlyStrict]
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
-        try {
+
+assert.throws(SyntaxError, function() {
             eval("function _13_1_5_fun(param, param) { }");
-            return false;
-        } catch (e) {
-            return e instanceof SyntaxError;
-        }
-    }
-runTestCase(testcase);
+});
diff --git a/test/language/statements/function/13.1-6-s.js b/test/language/statements/function/13.1-6-s.js
index 24f7542da2a3ed874ae5b94be4e94c5dc378cdae..d02d720914030c29c8f2528b5e80473b219a9873 100644
--- a/test/language/statements/function/13.1-6-s.js
+++ b/test/language/statements/function/13.1-6-s.js
@@ -13,15 +13,9 @@ description: >
     identical parameters, which are separated by a unique parameter
     name
 flags: [onlyStrict]
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
-        try {
+
+assert.throws(SyntaxError, function() {
             eval("function _13_1_6_fun(param1, param2, param1) { }");
-            return false;
-        } catch (e) {
-            return e instanceof SyntaxError;
-        }
-    }
-runTestCase(testcase);
+});
diff --git a/test/language/statements/function/13.1-7-s.js b/test/language/statements/function/13.1-7-s.js
index 64e4b17217ead4cedb6773deba823577c33f5278..b42b13e82384722bc78d0def28494aa284ac7de2 100644
--- a/test/language/statements/function/13.1-7-s.js
+++ b/test/language/statements/function/13.1-7-s.js
@@ -12,15 +12,9 @@ description: >
     'strict mode' using a FunctionDeclaration and the function has
     three identical parameters
 flags: [onlyStrict]
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
-        try {
+
+assert.throws(SyntaxError, function() {
             eval("function _13_1_7_fun(param, param, param) { }");
-            return false;
-        } catch (e) {
-            return e instanceof SyntaxError;
-        }
-    }
-runTestCase(testcase);
+});
diff --git a/test/language/statements/function/13.1-8-s.js b/test/language/statements/function/13.1-8-s.js
index 9ab6acd8030e652bf1e57bfa8b35c2906ad77bce..42f977405afe6f6acb1b50852f60dfbc10936a96 100644
--- a/test/language/statements/function/13.1-8-s.js
+++ b/test/language/statements/function/13.1-8-s.js
@@ -12,15 +12,9 @@ description: >
     'strict mode' using a FunctionExpression and the function has two
     identical parameters
 flags: [onlyStrict]
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
-        try {
+
+assert.throws(SyntaxError, function() {
             eval("var _13_1_8_fun = function (param, param) { };");
-            return false;
-        } catch (e) {
-            return e instanceof SyntaxError;
-        }
-    }
-runTestCase(testcase);
+});
diff --git a/test/language/statements/function/13.1-9-s.js b/test/language/statements/function/13.1-9-s.js
index 551a6f61c746a0e3deea17a19a13963063ffb95f..a8284132c150df540f0479628a3d58214a898b03 100644
--- a/test/language/statements/function/13.1-9-s.js
+++ b/test/language/statements/function/13.1-9-s.js
@@ -13,15 +13,9 @@ description: >
     identical parameters, which are separated by a unique parameter
     name
 flags: [onlyStrict]
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
-        try {
+
+assert.throws(SyntaxError, function() {
             eval("var _13_1_9_fun = function (param1, param2, param1) { };");
-            return false;
-        } catch (e) {
-            return e instanceof SyntaxError;
-        }
-    }
-runTestCase(testcase);
+});
diff --git a/test/language/statements/function/13.2-10-s.js b/test/language/statements/function/13.2-10-s.js
index 4687488f61c696aa3f88548b10141ae4d22cd5cc..6cefcc79d757aa2e4f4a051a597303e1f8568308 100644
--- a/test/language/statements/function/13.2-10-s.js
+++ b/test/language/statements/function/13.2-10-s.js
@@ -6,17 +6,9 @@ es5id: 13.2-10-s
 description: >
     StrictMode - writing a property named 'caller' of function objects
     is not allowed outside the function
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
         var foo = Function("'use strict';");
-        try {
+assert.throws(TypeError, function() {
             foo.caller = 41;
-            return false;
-        }
-        catch (e) {
-            return e instanceof TypeError;
-        }
-}
-runTestCase(testcase);
+});
diff --git a/test/language/statements/function/13.2-13-s.js b/test/language/statements/function/13.2-13-s.js
index ae3d1800f1c89d0d0e9bd761fb5fcdad78cc7253..3fb244f9e19dee432bd8babc9fc888a7a550036e 100644
--- a/test/language/statements/function/13.2-13-s.js
+++ b/test/language/statements/function/13.2-13-s.js
@@ -6,17 +6,9 @@ es5id: 13.2-13-s
 description: >
     StrictMode - reading a property named 'arguments' of function
     objects is not allowed outside the function
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
         var foo = new Function("'use strict';");
-        try {
+assert.throws(TypeError, function() {
             var temp = foo.arguments;
-            return false;
-        }
-        catch (e) {
-            return e instanceof TypeError;
-        }
-}
-runTestCase(testcase);
+});
diff --git a/test/language/statements/function/13.2-14-s.js b/test/language/statements/function/13.2-14-s.js
index 08e623791e305c4885b18ed84afe841b4ba53210..06073a4bd725884fefdcf1e08242749efd557b91 100644
--- a/test/language/statements/function/13.2-14-s.js
+++ b/test/language/statements/function/13.2-14-s.js
@@ -6,17 +6,9 @@ es5id: 13.2-14-s
 description: >
     StrictMode - writing a property named 'arguments' of function
     objects is not allowed outside the function
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
         var foo = new Function("'use strict';");
-        try {
+assert.throws(TypeError, function() {
             foo.arguments = 41;
-            return false;
-        }
-        catch (e) {
-            return e instanceof TypeError;
-        }
-}
-runTestCase(testcase);
+});
diff --git a/test/language/statements/function/13.2-17-s.js b/test/language/statements/function/13.2-17-s.js
index 5354731b2b77e5ae24a1160b208668aab9de09a2..df7a22e2e1226524eafcdc2171b31a851a76d185 100644
--- a/test/language/statements/function/13.2-17-s.js
+++ b/test/language/statements/function/13.2-17-s.js
@@ -6,17 +6,9 @@ es5id: 13.2-17-s
 description: >
     StrictMode - reading a property named 'arguments' of function
     objects is not allowed outside the function
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
         var foo = Function("'use strict';");
-        try {
+assert.throws(TypeError, function() {
             var temp = foo.arguments;
-            return false;
-        }
-        catch (e) {
-            return e instanceof TypeError;
-        }
-}
-runTestCase(testcase);
+});
diff --git a/test/language/statements/function/13.2-18-s.js b/test/language/statements/function/13.2-18-s.js
index 6ea8865190dc08a0f503e4c7b51c440813d5aa01..77b646722793e99ad0863f6948f8e72685e1245f 100644
--- a/test/language/statements/function/13.2-18-s.js
+++ b/test/language/statements/function/13.2-18-s.js
@@ -6,17 +6,9 @@ es5id: 13.2-18-s
 description: >
     StrictMode - writing a property named 'arguments' of function
     objects is not allowed outside the function
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
         var foo = Function("'use strict';");
-        try {
+assert.throws(TypeError, function() {
             foo.arguments = 41;
-            return false;
-        }
-        catch (e) {
-            return e instanceof TypeError;
-        }
-}
-runTestCase(testcase);
+});
diff --git a/test/language/statements/function/13.2-2-s.js b/test/language/statements/function/13.2-2-s.js
index d47478316c1a57ff45358ec5dad105b885073644..77e670e9f19628d492734a397fc2e61810168e50 100644
--- a/test/language/statements/function/13.2-2-s.js
+++ b/test/language/statements/function/13.2-2-s.js
@@ -7,17 +7,11 @@ description: >
     StrictMode - A TypeError is thrown when a strict mode code writes
     to properties named 'caller' of function instances.
 flags: [onlyStrict]
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
-        try {
+
+assert.throws(TypeError, function() {
             var foo = function () {
             }
             foo.caller = 20;
-            return false;
-        } catch (ex) {
-            return ex instanceof TypeError;
-        }
-    }
-runTestCase(testcase);
+});
diff --git a/test/language/statements/function/13.2-21-s.js b/test/language/statements/function/13.2-21-s.js
index c7b5ac37b83afe7edc891d29b3b181862a8058f9..34b13e98ae2907f860e80ce0c633d8974805356d 100644
--- a/test/language/statements/function/13.2-21-s.js
+++ b/test/language/statements/function/13.2-21-s.js
@@ -7,17 +7,9 @@ description: >
     StrictMode - reading a property named 'caller' of function objects
     is not allowed outside the function
 flags: [noStrict]
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
         function foo () {"use strict";}
-        try {
+assert.throws(TypeError, function() {
             var temp = foo.caller;
-            return false;
-        }
-        catch (e) {
-            return e instanceof TypeError;
-        }
-}
-runTestCase(testcase);
+});
diff --git a/test/language/statements/function/13.2-22-s.js b/test/language/statements/function/13.2-22-s.js
index 55a1a34a3260800801e9aa9cfc8f95a7d86b0e0b..a3955d8710027b1f7fcdf261455853cc234ff552 100644
--- a/test/language/statements/function/13.2-22-s.js
+++ b/test/language/statements/function/13.2-22-s.js
@@ -7,17 +7,9 @@ description: >
     StrictMode - writing a property named 'caller' of function objects
     is not allowed outside the function
 flags: [noStrict]
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
         function foo () {"use strict";}
-        try {
+assert.throws(TypeError, function() {
             foo.caller = 41;
-            return false;
-        }
-        catch (e) {
-            return e instanceof TypeError;
-        }
-}
-runTestCase(testcase);
+});
diff --git a/test/language/statements/function/13.2-25-s.js b/test/language/statements/function/13.2-25-s.js
index 05906597655c31d35f983e7e39db80da5eda4a20..b4a46bd72ff4c297f12cb2cbfb15f353894aa01a 100644
--- a/test/language/statements/function/13.2-25-s.js
+++ b/test/language/statements/function/13.2-25-s.js
@@ -7,17 +7,9 @@ description: >
     StrictMode - reading a property named 'arguments' of function
     objects is not allowed outside the function
 flags: [noStrict]
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
         function foo () {"use strict";}
-        try {
+assert.throws(TypeError, function() {
             var temp = foo.arguments;
-            return false;
-        }
-        catch (e) {
-            return e instanceof TypeError;
-        }
-}
-runTestCase(testcase);
+});
diff --git a/test/language/statements/function/13.2-26-s.js b/test/language/statements/function/13.2-26-s.js
index 33f2f1840d826e07506d5b8b8db659f48bc706cd..371af059c7983ec7b23b5b16bc5cc3e18ed9885f 100644
--- a/test/language/statements/function/13.2-26-s.js
+++ b/test/language/statements/function/13.2-26-s.js
@@ -7,17 +7,9 @@ description: >
     StrictMode - writing a property named 'arguments' of function
     objects is not allowed outside the function
 flags: [noStrict]
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
         function foo () {"use strict";}
-        try {
+assert.throws(TypeError, function() {
             foo.arguments = 41;
-            return false;
-        }
-        catch (e) {
-            return e instanceof TypeError;
-        }
-}
-runTestCase(testcase);
+});
diff --git a/test/language/statements/function/13.2-4-s.js b/test/language/statements/function/13.2-4-s.js
index 68a1b0a7a53da96b0475d400ab6121114c4ac32b..8ff3f336fc9aa4adf32bb7da0e975794bdb38cb3 100644
--- a/test/language/statements/function/13.2-4-s.js
+++ b/test/language/statements/function/13.2-4-s.js
@@ -7,17 +7,11 @@ description: >
     StrictMode - A TypeError is thrown when a code in strict mode
     tries to write to 'arguments' of function instances.
 flags: [onlyStrict]
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
-        try {
+
+assert.throws(TypeError, function() {
             var foo = function () {
             }
             foo.arguments = 20;
-            return false;
-        } catch (ex) {
-            return ex instanceof TypeError;
-        }
-    }
-runTestCase(testcase);
+});
diff --git a/test/language/statements/function/13.2-5-s.js b/test/language/statements/function/13.2-5-s.js
index 2000a444885114400d0c9f70967fe674b8770fcb..a617e305bb79e9da26e6c6fbe67e4740095b60fa 100644
--- a/test/language/statements/function/13.2-5-s.js
+++ b/test/language/statements/function/13.2-5-s.js
@@ -7,17 +7,9 @@ description: >
     StrictMode - reading a property named 'caller' of function objects
     is not allowed outside the function
 flags: [noStrict]
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
         var foo = new Function("'use strict';");
-        try {
+assert.throws(TypeError, function() {
             var temp = foo.caller;
-            return false;
-        }
-        catch (e) {
-            return e instanceof TypeError;
-        }
-    }
-runTestCase(testcase);
+});
diff --git a/test/language/statements/function/13.2-6-s.js b/test/language/statements/function/13.2-6-s.js
index d751d08041e8b110bbdc5256dd5e075d86f56441..ffe989f44d7edc6860b15d8a949e2bd048f58ec3 100644
--- a/test/language/statements/function/13.2-6-s.js
+++ b/test/language/statements/function/13.2-6-s.js
@@ -7,17 +7,9 @@ description: >
     StrictMode - writing a property named 'caller' of function objects
     is not allowed outside the function
 flags: [noStrict]
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
         var foo = new Function("'use strict';");
-        try {
+assert.throws(TypeError, function() {
             foo.caller = 41;
-            return false;
-        }
-        catch (e) {
-            return e instanceof TypeError;
-        }
-}
-runTestCase(testcase);
+});
diff --git a/test/language/statements/function/13.2-9-s.js b/test/language/statements/function/13.2-9-s.js
index 9594fbb11208608bd577bbfe3affe6eba4858ba2..756d0e1a21911eb548264ec31d3a8febc4a37e10 100644
--- a/test/language/statements/function/13.2-9-s.js
+++ b/test/language/statements/function/13.2-9-s.js
@@ -7,17 +7,9 @@ description: >
     StrictMode - reading a property named 'caller' of function objects
     is not allowed outside the function
 flags: [noStrict]
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
         var foo = Function("'use strict';");
-        try {
+assert.throws(TypeError, function() {
             var temp = foo.caller;
-            return false;
-        }
-        catch (e) {
-            return e instanceof TypeError;
-        }
-}
-runTestCase(testcase);
+});
diff --git a/test/language/statements/try/12.14.1-1-s.js b/test/language/statements/try/12.14.1-1-s.js
index e88f976ae791bafe62b1ae70ebf7e7b8430dd907..688e10439d239fec34031958d9f3974aecec8b6c 100644
--- a/test/language/statements/try/12.14.1-1-s.js
+++ b/test/language/statements/try/12.14.1-1-s.js
@@ -8,17 +8,10 @@ description: >
     occurs within strict code and the Identifier of the Catch
     production is eval
 flags: [onlyStrict]
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
-        try {
+assert.throws(SyntaxError, function() {
             eval("\
                    try {} catch (eval) { }\
             ");
-            return false;
-        } catch (e) {
-            return e instanceof SyntaxError;
-        }
-    }
-runTestCase(testcase);
+});
diff --git a/test/language/statements/try/12.14.1-2-s.js b/test/language/statements/try/12.14.1-2-s.js
index 0fe35a999522106f37c2e10cdbc0a874c7918213..7977218340902d3d973ef264360870f070a81d13 100644
--- a/test/language/statements/try/12.14.1-2-s.js
+++ b/test/language/statements/try/12.14.1-2-s.js
@@ -8,17 +8,10 @@ description: >
     occurs within strict code and the Identifier of the Catch
     production is arguments
 flags: [onlyStrict]
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
-        try {
+assert.throws(SyntaxError, function() {
             eval("\
                    try {} catch (arguments) { }\
             ");
-            return false;
-        } catch (e) {
-            return e instanceof SyntaxError;
-        }
-    }
-runTestCase(testcase);
+});
diff --git a/test/language/statements/try/12.14.1-3-s.js b/test/language/statements/try/12.14.1-3-s.js
index 29e75f7ceb9d54179a4015fe2b0002230b632c0c..7223984812aca05889d3108fed959b1c7ed95852 100644
--- a/test/language/statements/try/12.14.1-3-s.js
+++ b/test/language/statements/try/12.14.1-3-s.js
@@ -8,11 +8,10 @@ description: >
     Catch occurs within strict code and the Identifier of the Catch
     production is EVAL but throws SyntaxError if it is eval
 flags: [onlyStrict]
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
-       try{ eval(" try { \
+assert.throws(SyntaxError, function() {
+ eval(" try { \
              throw new Error(\"...\");\
              return false;\
          } catch (EVAL) {\
@@ -24,9 +23,4 @@ function testcase() {
                  return EVAL instanceof Error;\
               }\
          }");
-         return false;
-        } catch(e) {
-             return e instanceof SyntaxError;
-        }
-    }
-runTestCase(testcase);
+});
diff --git a/test/language/statements/variable/12.2.1-1-s.js b/test/language/statements/variable/12.2.1-1-s.js
index 448ebb28b6c83170cfdd23b9e9b78d19cd495c9d..bdf44cea2b9b40647fe764aaf94d0fd94a37aa50 100644
--- a/test/language/statements/variable/12.2.1-1-s.js
+++ b/test/language/statements/variable/12.2.1-1-s.js
@@ -7,16 +7,9 @@ description: >
     eval - a function declaring a var named 'eval' throws SyntaxError
     in strict mode
 flags: [onlyStrict]
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
-  try {
+
+assert.throws(SyntaxError, function() {
     eval('function foo() { var eval; }');
-    return false;
-  }
-  catch (e) {
-    return (e instanceof SyntaxError);
-  }
- }
-runTestCase(testcase);
+});
diff --git a/test/language/statements/variable/12.2.1-12-s.js b/test/language/statements/variable/12.2.1-12-s.js
index 8028f64738bdd17e69c42b4233be3162ba57dcb5..50ffbfef3cc6ebc09b9c06b095f857c70e10b8e2 100644
--- a/test/language/statements/variable/12.2.1-12-s.js
+++ b/test/language/statements/variable/12.2.1-12-s.js
@@ -5,16 +5,9 @@
 es5id: 12.2.1-12-s
 description: arguments as local var identifier throws SyntaxError in strict mode
 flags: [onlyStrict]
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
-  try {
+
+assert.throws(SyntaxError, function() {
     eval('function foo() { var arguments;}');
-    return false;
-  }
-  catch (e) {
-    return (e instanceof SyntaxError);
-  }
- }
-runTestCase(testcase);
+});
diff --git a/test/language/statements/variable/12.2.1-13-s.js b/test/language/statements/variable/12.2.1-13-s.js
index 8de3ada3ff485b0e9e923775b9c164375554f059..5e9fc3a6d5ae1dce6d48ecbeb354f8f5b4a19ae7 100644
--- a/test/language/statements/variable/12.2.1-13-s.js
+++ b/test/language/statements/variable/12.2.1-13-s.js
@@ -5,16 +5,9 @@
 es5id: 12.2.1-13-s
 description: arguments assignment throws SyntaxError in strict mode
 flags: [onlyStrict]
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
-  try {
+
+assert.throws(SyntaxError, function() {
     eval('function foo() { arguments = 42; }; foo()');
-    return false;
-  }
-  catch (e) {
-    return (e instanceof SyntaxError);
-  }
- }
-runTestCase(testcase);
+});
diff --git a/test/language/statements/variable/12.2.1-14-s.js b/test/language/statements/variable/12.2.1-14-s.js
index 0f43c2824b5c3aaa064cd48ef7e06ef5d39cc573..06cf5eba8d9ccd0bb015ebd2e5a3f1febb8f2b68 100644
--- a/test/language/statements/variable/12.2.1-14-s.js
+++ b/test/language/statements/variable/12.2.1-14-s.js
@@ -7,16 +7,9 @@ description: >
     arguments - a function expr declaring a var named 'arguments'
     throws SyntaxError in strict mode
 flags: [onlyStrict]
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
-  try {
+
+assert.throws(SyntaxError, function() {
     eval('(function (){var arguments;});');
-    return false;
-  }
-  catch (e) {
-    return (e instanceof SyntaxError);
-  }
-}
-runTestCase(testcase);
+});
diff --git a/test/language/statements/variable/12.2.1-15-s.js b/test/language/statements/variable/12.2.1-15-s.js
index 2da7a85230a150ad97ef6332ff9e322f8d91d965..8447267316ec452963c338aed1bfd979bcb98efe 100644
--- a/test/language/statements/variable/12.2.1-15-s.js
+++ b/test/language/statements/variable/12.2.1-15-s.js
@@ -7,16 +7,9 @@ description: >
     arguments - a function expr assigning into 'arguments' throws a
     SyntaxError in strict mode
 flags: [onlyStrict]
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
-  try {
+
+assert.throws(SyntaxError, function() {
     eval('(function () {arguments = 42;})()');
-    return false;
-  }
-  catch (e) {
-    return (e instanceof SyntaxError);
-  }
-}
-runTestCase(testcase);
+});
diff --git a/test/language/statements/variable/12.2.1-18-s.js b/test/language/statements/variable/12.2.1-18-s.js
index 6e8c15b00db1ead1a1a13bb42d646cb788f894b6..88e1327365185bf32b86642ff9ebc166f7d58a78 100644
--- a/test/language/statements/variable/12.2.1-18-s.js
+++ b/test/language/statements/variable/12.2.1-18-s.js
@@ -7,16 +7,9 @@ description: >
     A direct eval declaring a var named 'arguments' throws SyntaxError
     in strict mode
 flags: [onlyStrict]
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
-  try {
+
+assert.throws(SyntaxError, function() {
     eval('var arguments;');
-    return false;
-  }
-  catch (e) {
-    return (e instanceof SyntaxError);
-  }
-}
-runTestCase(testcase);
+});
diff --git a/test/language/statements/variable/12.2.1-19-s.js b/test/language/statements/variable/12.2.1-19-s.js
index fd73916ddbd24074cc4ef1729a04ff1dde827c33..e750197fc34e1e6f419e31e6ee15b1a0ea7662d4 100644
--- a/test/language/statements/variable/12.2.1-19-s.js
+++ b/test/language/statements/variable/12.2.1-19-s.js
@@ -7,16 +7,9 @@ description: >
     A direct eval assigning into 'arguments' throws SyntaxError in
     strict mode
 flags: [onlyStrict]
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
-  try {
+
+assert.throws(SyntaxError, function() {
     eval('arguments = 42;');
-    return false;
-  }
-  catch (e) {
-    return (e instanceof SyntaxError) ;
-  }
-}
-runTestCase(testcase);
+});
diff --git a/test/language/statements/variable/12.2.1-2-s.js b/test/language/statements/variable/12.2.1-2-s.js
index d2e96976c789f64f92322d01f40e2ccaefb8a2a5..40da7f8923664017998bdff44467c79dafe5a161 100644
--- a/test/language/statements/variable/12.2.1-2-s.js
+++ b/test/language/statements/variable/12.2.1-2-s.js
@@ -7,16 +7,9 @@ description: >
     eval - a function assigning into 'eval' throws SyntaxError in
     strict mode
 flags: [onlyStrict]
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
-  try {
+
+assert.throws(SyntaxError, function() {
     eval('function foo() { eval = 42; }; foo()');
-    return false;
-  }
-  catch (e) {
-    return (e instanceof SyntaxError);
-  }
- }
-runTestCase(testcase);
+});
diff --git a/test/language/statements/variable/12.2.1-22-s.js b/test/language/statements/variable/12.2.1-22-s.js
index f84c20578c23ac7a89808ad538f71962fa70e040..4c737c6af5b66ede36802f9886ba7ac1616939ac 100644
--- a/test/language/statements/variable/12.2.1-22-s.js
+++ b/test/language/statements/variable/12.2.1-22-s.js
@@ -6,19 +6,9 @@ es5id: 12.2.1-22-s
 description: >
     arguments as global var identifier throws SyntaxError in strict
     mode
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
-
     var indirectEval = eval;
-	
-    try {
+assert.throws(SyntaxError, function() {
 	    indirectEval("'use strict'; var arguments;");
-        return false;
-	}
-    catch (e) {
-        return (e instanceof SyntaxError);
-	}
-}
-runTestCase(testcase);
+});
diff --git a/test/language/statements/variable/12.2.1-23-s.js b/test/language/statements/variable/12.2.1-23-s.js
index 3ee332933ed898653f459cbee8e31f77ab035073..45e3912de75c46d3480d1101464cf9ab4e4f938f 100644
--- a/test/language/statements/variable/12.2.1-23-s.js
+++ b/test/language/statements/variable/12.2.1-23-s.js
@@ -7,16 +7,9 @@ description: >
     arguments as local var identifier assigned to throws SyntaxError
     in strict mode
 flags: [onlyStrict]
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
-  try {
+
+assert.throws(SyntaxError, function() {
     eval('function foo() { var arguments = 42;}');
-    return false;
-  }
-  catch (e) {
-    return (e instanceof SyntaxError);
-  }
-}
-runTestCase(testcase);
+});
diff --git a/test/language/statements/variable/12.2.1-24-s.js b/test/language/statements/variable/12.2.1-24-s.js
index bac5088214ef854172e1903607e89b21c071ee8d..8e5818b10763c9e79c0a8bb587a0d23009d0772e 100644
--- a/test/language/statements/variable/12.2.1-24-s.js
+++ b/test/language/statements/variable/12.2.1-24-s.js
@@ -7,16 +7,9 @@ description: >
     eval as local var identifier assigned to throws SyntaxError in
     strict mode
 flags: [onlyStrict]
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
-  try {
+
+assert.throws(SyntaxError, function() {
     eval('function foo() { var eval = 42;}');
-    return false;
-  }
-  catch (e) {
-    return (e instanceof SyntaxError);
-  }
-}
-runTestCase(testcase);
+});
diff --git a/test/language/statements/variable/12.2.1-25-s.js b/test/language/statements/variable/12.2.1-25-s.js
index 826afe7a97cd3c3898b96c2db8eacd4817d28fb3..95712e37f407daff76f02bba2f7d849020b8ffc3 100644
--- a/test/language/statements/variable/12.2.1-25-s.js
+++ b/test/language/statements/variable/12.2.1-25-s.js
@@ -5,16 +5,9 @@
 es5id: 12.2.1-25-s
 description: arguments as local var identifier throws SyntaxError in strict mode
 flags: [onlyStrict]
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
-  try {
+
+assert.throws(SyntaxError, function() {
     eval('function foo() { var arguments, a;}');
-    return false;
-  }
-  catch (e) {
-    return (e instanceof SyntaxError);
-  }
-}
-runTestCase(testcase);
+});
diff --git a/test/language/statements/variable/12.2.1-26-s.js b/test/language/statements/variable/12.2.1-26-s.js
index a12e454ffb8a207aac4a8953f5f3620a033fa53e..427689845b4e97d85a20f49ff3e7c9b2091d1275 100644
--- a/test/language/statements/variable/12.2.1-26-s.js
+++ b/test/language/statements/variable/12.2.1-26-s.js
@@ -5,16 +5,9 @@
 es5id: 12.2.1-26-s
 description: eval as local var identifier throws SyntaxError in strict mode
 flags: [onlyStrict]
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
-  try {
+
+assert.throws(SyntaxError, function() {
     eval('function foo() { var a, eval;}');
-    return false;
-  }
-  catch (e) {
-    return (e instanceof SyntaxError);
-  }
-}
-runTestCase(testcase);
+});
diff --git a/test/language/statements/variable/12.2.1-27-s.js b/test/language/statements/variable/12.2.1-27-s.js
index cf6bbad494773a38e57e522b970165b2aadbc086..51b3bc1b322839755ce4c6d3dd426a361160f7ca 100644
--- a/test/language/statements/variable/12.2.1-27-s.js
+++ b/test/language/statements/variable/12.2.1-27-s.js
@@ -7,16 +7,9 @@ description: >
     eval as local var identifier assigned to throws SyntaxError in
     strict mode
 flags: [onlyStrict]
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
-  try {
+
+assert.throws(SyntaxError, function() {
     eval('function foo() { var eval = 42, a;}');
-    return false;
-  }
-  catch (e) {
-    return (e instanceof SyntaxError);
-  }
-}
-runTestCase(testcase);
+});
diff --git a/test/language/statements/variable/12.2.1-28-s.js b/test/language/statements/variable/12.2.1-28-s.js
index fcf7156af5f3508f1b52a1f28da07ac1a3a1e462..c06f66b58c73d03d33de09d750e6c5b76c0b47c9 100644
--- a/test/language/statements/variable/12.2.1-28-s.js
+++ b/test/language/statements/variable/12.2.1-28-s.js
@@ -7,16 +7,9 @@ description: >
     arguments as local var identifier assigned to throws SyntaxError
     in strict mode
 flags: [onlyStrict]
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
-  try {
+
+assert.throws(SyntaxError, function() {
     eval('function foo() { var a, arguments = 42;}');
-    return false;
-  }
-  catch (e) {
-    return (e instanceof SyntaxError);
-  }
-}
-runTestCase(testcase);
+});
diff --git a/test/language/statements/variable/12.2.1-29-s.js b/test/language/statements/variable/12.2.1-29-s.js
index 3470528578b1733dc325fe4419e11a02f1801c65..f188ae7196fef179f8c63740ccc4c5fdbb580610 100644
--- a/test/language/statements/variable/12.2.1-29-s.js
+++ b/test/language/statements/variable/12.2.1-29-s.js
@@ -5,16 +5,9 @@
 es5id: 12.2.1-29-s
 description: eval as local var identifier throws SyntaxError in strict mode
 flags: [onlyStrict]
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
-  try {
+
+assert.throws(SyntaxError, function() {
     eval('function foo() { var eval, a = 42;}');
-    return false;
-  }
-  catch (e) {
-    return (e instanceof SyntaxError);
-  }
-}
-runTestCase(testcase);
+});
diff --git a/test/language/statements/variable/12.2.1-3-s.js b/test/language/statements/variable/12.2.1-3-s.js
index 75d700f5e0bbb5659a20762f7aa31d895ae1744d..19166749a4e3c22ceee398e35e226820d6a0d5b6 100644
--- a/test/language/statements/variable/12.2.1-3-s.js
+++ b/test/language/statements/variable/12.2.1-3-s.js
@@ -7,16 +7,9 @@ description: >
     eval - a function expr declaring a var named 'eval' throws
     SyntaxError in strict mode
 flags: [onlyStrict]
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
-  try {
+
+assert.throws(SyntaxError, function() {
     eval('(function () { var eval; })');
-    return false;
-  }
-  catch (e) {
-    return (e instanceof SyntaxError);
-  }
- }
-runTestCase(testcase);
+});
diff --git a/test/language/statements/variable/12.2.1-30-s.js b/test/language/statements/variable/12.2.1-30-s.js
index d66da4f82cd2334767a7e22fa0700b7df48bace3..2fb229dda08380606fc2fe80840f6dfca6831da5 100644
--- a/test/language/statements/variable/12.2.1-30-s.js
+++ b/test/language/statements/variable/12.2.1-30-s.js
@@ -5,16 +5,9 @@
 es5id: 12.2.1-30-s
 description: arguments as local var identifier throws SyntaxError in strict mode
 flags: [onlyStrict]
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
-  try {
+
+assert.throws(SyntaxError, function() {
     eval('function foo() { var a = 42, arguments;}');
-    return false;
-  }
-  catch (e) {
-    return (e instanceof SyntaxError);
-  }
-}
-runTestCase(testcase);
+});
diff --git a/test/language/statements/variable/12.2.1-31-s.js b/test/language/statements/variable/12.2.1-31-s.js
index 7b45601ba5991359e101622498877aba43217aaf..937313d894e4d4add9a59747037080af10f79287 100644
--- a/test/language/statements/variable/12.2.1-31-s.js
+++ b/test/language/statements/variable/12.2.1-31-s.js
@@ -7,16 +7,9 @@ description: >
     eval as local var identifier defined twice throws SyntaxError in
     strict mode
 flags: [onlyStrict]
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
-  try {
+
+assert.throws(SyntaxError, function() {
     eval('function foo() { var eval, eval;}');
-    return false;
-  }
-  catch (e) {
-    return (e instanceof SyntaxError);
-  }
-}
-runTestCase(testcase);
+});
diff --git a/test/language/statements/variable/12.2.1-32-s.js b/test/language/statements/variable/12.2.1-32-s.js
index b0b17ce06066f0e067ae9311ee2a57daa065b5ea..12326d08bf9b987c1fd046e9b31fab4c1d042594 100644
--- a/test/language/statements/variable/12.2.1-32-s.js
+++ b/test/language/statements/variable/12.2.1-32-s.js
@@ -7,16 +7,9 @@ description: >
     arguments as local var identifier defined twice and assigned once
     throws SyntaxError in strict mode
 flags: [onlyStrict]
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
-  try {
+
+assert.throws(SyntaxError, function() {
     eval('function foo() { var arguments, arguments = 42;}');
-    return false;
-  }
-  catch (e) {
-    return (e instanceof SyntaxError);
-  }
-}
-runTestCase(testcase);
+});
diff --git a/test/language/statements/variable/12.2.1-33-s.js b/test/language/statements/variable/12.2.1-33-s.js
index 188ec7545886d8326a18eb0e56a7fdea945877ee..0b474dd519ac65b73fd62272a009cae9139d16a1 100644
--- a/test/language/statements/variable/12.2.1-33-s.js
+++ b/test/language/statements/variable/12.2.1-33-s.js
@@ -5,16 +5,9 @@
 es5id: 12.2.1-33-s
 description: arguments as local var identifier throws SyntaxError in strict mode
 flags: [onlyStrict]
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
-  try {
+
+assert.throws(SyntaxError, function() {
     eval('function foo() { var a, arguments, b;}');
-    return false;
-  }
-  catch (e) {
-    return (e instanceof SyntaxError);
-  }
-}
-runTestCase(testcase);
+});
diff --git a/test/language/statements/variable/12.2.1-34-s.js b/test/language/statements/variable/12.2.1-34-s.js
index 2cdf1495bcbab5698e4d49fdf92f76882107b3b2..c7794514a1bbec25f4940957a2116ab7a2548f8c 100644
--- a/test/language/statements/variable/12.2.1-34-s.js
+++ b/test/language/statements/variable/12.2.1-34-s.js
@@ -5,16 +5,9 @@
 es5id: 12.2.1-34-s
 description: "'for(var eval in ...) {...}' throws SyntaxError in strict mode"
 flags: [onlyStrict]
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
-  try {
+
+assert.throws(SyntaxError, function() {
     eval('for (var eval in null) {};');
-    return false;
-  }
-  catch (e) {
-    return (e instanceof SyntaxError);
-  }
- }
-runTestCase(testcase);
+});
diff --git a/test/language/statements/variable/12.2.1-35-s.js b/test/language/statements/variable/12.2.1-35-s.js
index c9f40642300e5cf615b645129b404f54ed47182b..5d8d17ce558431d38e4044ef487d3192017a94b5 100644
--- a/test/language/statements/variable/12.2.1-35-s.js
+++ b/test/language/statements/variable/12.2.1-35-s.js
@@ -5,16 +5,9 @@
 es5id: 12.2.1-35-s
 description: "'for(var eval = 42 in ...) {...}' throws SyntaxError in strict mode"
 flags: [onlyStrict]
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
-  try {
+
+assert.throws(SyntaxError, function() {
     eval('for (var eval = 42 in null) {};');
-    return false;
-  }
-  catch (e) {
-    return (e instanceof SyntaxError);
-  }
- }
-runTestCase(testcase);
+});
diff --git a/test/language/statements/variable/12.2.1-36-s.js b/test/language/statements/variable/12.2.1-36-s.js
index de1dcab5197366a405c0338a427c1cbc69ef40c3..872d7c7c2a56f3039fb2c45f519ec485ac802dc5 100644
--- a/test/language/statements/variable/12.2.1-36-s.js
+++ b/test/language/statements/variable/12.2.1-36-s.js
@@ -5,16 +5,9 @@
 es5id: 12.2.1-36-s
 description: "'for(var arguments in ...) {...}' throws SyntaxError in strict mode"
 flags: [onlyStrict]
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
-  try {
+
+assert.throws(SyntaxError, function() {
     eval('for (var arguments in null) {};');
-    return false;
-  }
-  catch (e) {
-    return (e instanceof SyntaxError);
-  }
- }
-runTestCase(testcase);
+});
diff --git a/test/language/statements/variable/12.2.1-37-s.js b/test/language/statements/variable/12.2.1-37-s.js
index 6e81d9702cb24da92a1f77d333416d3715a0d984..cf7227e630c7faba37983a2f21ab14e46349393c 100644
--- a/test/language/statements/variable/12.2.1-37-s.js
+++ b/test/language/statements/variable/12.2.1-37-s.js
@@ -7,16 +7,9 @@ description: >
     'for(var arguments = 42 in ...) {...}' throws SyntaxError in
     strict mode
 flags: [onlyStrict]
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
-  try {
+
+assert.throws(SyntaxError, function() {
     eval('for (var arguments = 42 in null) {};');
-    return false;
-  }
-  catch (e) {
-    return (e instanceof SyntaxError);
-  }
- }
-runTestCase(testcase);
+});
diff --git a/test/language/statements/variable/12.2.1-4-s.js b/test/language/statements/variable/12.2.1-4-s.js
index ccdeec6ce75a58acd8c25bb0fd282495efc3d1c0..00fbcde7f80775dc35a6b6d162a132f15a220595 100644
--- a/test/language/statements/variable/12.2.1-4-s.js
+++ b/test/language/statements/variable/12.2.1-4-s.js
@@ -7,16 +7,9 @@ description: >
     eval - a function expr assigning into 'eval' throws a SyntaxError
     in strict mode
 flags: [onlyStrict]
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
-  try {
+
+assert.throws(SyntaxError, function() {
     eval('(function () { eval = 42; })()');
-    return false;
-  }
-  catch (e) {
-    return (e instanceof SyntaxError);
-  }
- }
-runTestCase(testcase);
+});
diff --git a/test/language/statements/variable/12.2.1-7-s.js b/test/language/statements/variable/12.2.1-7-s.js
index 2f16e64b4eecba0d94f75c8fb9113fb50b7cd2b1..723c5d221c0c5307e5283faeeba0218b6d2bf316 100644
--- a/test/language/statements/variable/12.2.1-7-s.js
+++ b/test/language/statements/variable/12.2.1-7-s.js
@@ -7,16 +7,9 @@ description: >
     eval - a direct eval declaring a var named 'eval' throws
     SyntaxError in strict mode
 flags: [onlyStrict]
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
-  try {
+
+assert.throws(SyntaxError, function() {
     eval('var eval;');
-    return false;
-  }
-  catch (e) {
-    return (e instanceof SyntaxError);
-  }
- }
-runTestCase(testcase);
+});
diff --git a/test/language/statements/variable/12.2.1-8-s.js b/test/language/statements/variable/12.2.1-8-s.js
index 5156674d832fdce1990fc674bb66cb531708f6da..aa75ccea9640f57c7f13e57099ba113b2edf4b2c 100644
--- a/test/language/statements/variable/12.2.1-8-s.js
+++ b/test/language/statements/variable/12.2.1-8-s.js
@@ -7,16 +7,9 @@ description: >
     eval - a direct eval assigning into 'eval' throws SyntaxError in
     strict mode
 flags: [onlyStrict]
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
-  try {
+
+assert.throws(SyntaxError, function() {
     eval('eval = 42;');
-    return false;
-  }
-  catch (e) {
-    return (e instanceof SyntaxError) ;
-  }
- }
-runTestCase(testcase);
+});
diff --git a/test/language/statements/with/12.10.1-1-s.js b/test/language/statements/with/12.10.1-1-s.js
index 634e2ffda1541f9a37d5b41f2c51961ed0cacf78..140771146996427815c7e42097b97567b8a80805 100644
--- a/test/language/statements/with/12.10.1-1-s.js
+++ b/test/language/statements/with/12.10.1-1-s.js
@@ -5,12 +5,10 @@
 es5id: 12.10.1-1-s
 description: with statement in strict mode throws SyntaxError (strict function)
 flags: [noStrict]
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
 
-  try {
+assert.throws(SyntaxError, function() {
     // wrapping it in eval since this needs to be a syntax error. The
     // exception thrown must be a SyntaxError exception.
     eval("\
@@ -20,10 +18,4 @@ function testcase() {
             with (o) {};\
           }\
         ");
-    return false;
-  }
-  catch (e) {
-    return(e instanceof SyntaxError); 
-	}
- }
-runTestCase(testcase);
+});
diff --git a/test/language/statements/with/12.10.1-10-s.js b/test/language/statements/with/12.10.1-10-s.js
index 00b713824d6ce36d3bcb04066bf3ddcc452d1eee..49553bee7235de23b3920e1f0c762ae378e824a8 100644
--- a/test/language/statements/with/12.10.1-10-s.js
+++ b/test/language/statements/with/12.10.1-10-s.js
@@ -7,22 +7,14 @@ description: >
     with statement in strict mode throws SyntaxError (eval, where the
     container function is strict)
 flags: [onlyStrict]
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
   // wrapping it in eval since this needs to be a syntax error. The
   // exception thrown must be a SyntaxError exception. Note that eval
   // inherits the strictness of its calling context.  
-  try {
+assert.throws(SyntaxError, function() {
     eval("\
           var o = {};\
           with (o) {}\
        ");
-    return false;
-  }
-  catch (e) {
-    return (e instanceof SyntaxError);
-  }
- }
-runTestCase(testcase);
+});
diff --git a/test/language/statements/with/12.10.1-11-s.js b/test/language/statements/with/12.10.1-11-s.js
index 5d03b9f6e7f94c72b4507988f1101ee787974125..1b4e2e1f3e0ad032b68fd4e8b5e2f471bbdb9ec1 100644
--- a/test/language/statements/with/12.10.1-11-s.js
+++ b/test/language/statements/with/12.10.1-11-s.js
@@ -7,16 +7,9 @@ description: >
     Strict Mode - SyntaxError is thrown when using WithStatement in
     strict mode code
 flags: [onlyStrict]
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
-        try {
-            eval("with ({}) { throw new Error();}");
 
-            return false;
-        } catch (e) {
-            return e instanceof SyntaxError;
-        }
-    }
-runTestCase(testcase);
+assert.throws(SyntaxError, function() {
+            eval("with ({}) { throw new Error();}");
+});
diff --git a/test/language/statements/with/12.10.1-12-s.js b/test/language/statements/with/12.10.1-12-s.js
index c6a1cc6c0d851485dc92fd94955fcd58d312595a..fe450fac806ef6275db77f19b80109aba2522a40 100644
--- a/test/language/statements/with/12.10.1-12-s.js
+++ b/test/language/statements/with/12.10.1-12-s.js
@@ -5,20 +5,13 @@
 es5id: 12.10.1-12-s
 description: with statement in strict mode throws SyntaxError (strict eval)
 flags: [noStrict]
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
-  try {
+
+assert.throws(SyntaxError, function() {
     eval("\
           'use strict'; \
           var o = {}; \
           with (o) {}\
         ");
-    return false;
-  }
-  catch (e) {
-    return (e instanceof SyntaxError) ;
-  }
- }
-runTestCase(testcase);
+});
diff --git a/test/language/statements/with/12.10.1-14-s.js b/test/language/statements/with/12.10.1-14-s.js
index 0078f1236662f2b8888995eb25e35878250166d9..8c825e74b861c87d0d0298f51d650793e5da8949 100644
--- a/test/language/statements/with/12.10.1-14-s.js
+++ b/test/language/statements/with/12.10.1-14-s.js
@@ -7,16 +7,9 @@ description: >
     Strict Mode - SyntaxError is thrown when the getter of a literal
     object utilizes WithStatement
 flags: [onlyStrict]
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
-        try {
-            eval("var obj = { get(a) { with(a){} } }; ");
 
-            return false;
-        } catch (e) {
-            return e instanceof SyntaxError;
-        }
-    }
-runTestCase(testcase);
+assert.throws(SyntaxError, function() {
+            eval("var obj = { get(a) { with(a){} } }; ");
+});
diff --git a/test/language/statements/with/12.10.1-15-s.js b/test/language/statements/with/12.10.1-15-s.js
index 7191936831312dace2316e9330645f69a40da2d5..b552a9a762b797fb025fb419dc10f4cb878ed1d4 100644
--- a/test/language/statements/with/12.10.1-15-s.js
+++ b/test/language/statements/with/12.10.1-15-s.js
@@ -7,15 +7,9 @@ description: >
     Strict Mode - SyntaxError is thrown when the RHS of a dot property
     assignment utilizes WithStatement
 flags: [onlyStrict]
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
-        try {
+
+assert.throws(SyntaxError, function() {
             eval("var obj = {}; obj.get = function (a) { with(a){} }; ");
-            return false;
-        } catch (e) {
-            return e instanceof SyntaxError;
-        }
-    }
-runTestCase(testcase);
+});
diff --git a/test/language/statements/with/12.10.1-16-s.js b/test/language/statements/with/12.10.1-16-s.js
index 4bbd2d22bc90047ab78ec3859da1a908d16aebbb..5fe63c58faab60bae85ac6c87f7700f90d67cfce 100644
--- a/test/language/statements/with/12.10.1-16-s.js
+++ b/test/language/statements/with/12.10.1-16-s.js
@@ -7,15 +7,9 @@ description: >
     Strict Mode - SyntaxError is thrown when the RHS of an object
     indexer assignment utilizes WithStatement
 flags: [onlyStrict]
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
-        try {
+
+assert.throws(SyntaxError, function() {
             eval("var obj = {}; obj['get'] = function (a) { with(a){} };  ");
-            return false;
-        } catch (e) {
-            return e instanceof SyntaxError;
-        }
-    }
-runTestCase(testcase);
+});
diff --git a/test/language/statements/with/12.10.1-2-s.js b/test/language/statements/with/12.10.1-2-s.js
index 1fab7fe6d77eb220045055c2925965da814a7233..639f81413fa12e372e529c51b1a96215821cf346 100644
--- a/test/language/statements/with/12.10.1-2-s.js
+++ b/test/language/statements/with/12.10.1-2-s.js
@@ -7,11 +7,10 @@ description: >
     with statement in strict mode throws SyntaxError (nested function
     where container is strict)
 flags: [noStrict]
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
-  try {
+
+assert.throws(SyntaxError, function() {
     // wrapping it in eval since this needs to be a syntax error. The
     // exception thrown must be a SyntaxError exception.
     eval("\
@@ -23,10 +22,4 @@ function testcase() {
             }\
           }\
         ");
-    return false;
-  }
-  catch (e) {
-    return (e instanceof SyntaxError);
-  }
- }
-runTestCase(testcase);
+});
diff --git a/test/language/statements/with/12.10.1-3-s.js b/test/language/statements/with/12.10.1-3-s.js
index 1a186ff2dca3ba73b0c80cace0ddf539cac0b1b9..922d035960cc32f5f8bca28e6f22ce79d8f0d0c3 100644
--- a/test/language/statements/with/12.10.1-3-s.js
+++ b/test/language/statements/with/12.10.1-3-s.js
@@ -7,11 +7,10 @@ description: >
     with statement in strict mode throws SyntaxError (nested strict
     function)
 flags: [noStrict]
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
-  try {
+
+assert.throws(SyntaxError, function() {
     // wrapping it in eval since this needs to be a syntax error. The
     // exception thrown must be a SyntaxError exception.
     eval("\
@@ -23,10 +22,4 @@ function testcase() {
                 }\
               }\
         ");
-    return false;
-  }
-  catch (e) {
-    return (e instanceof SyntaxError);
-  }
- }
-runTestCase(testcase);
+});
diff --git a/test/language/statements/with/12.10.1-4-s.js b/test/language/statements/with/12.10.1-4-s.js
index 0a1a151fc75a9b398407461ece52fbd100078e4f..04a25d49fbff038e56ee6c51cf1680d17abbc736 100644
--- a/test/language/statements/with/12.10.1-4-s.js
+++ b/test/language/statements/with/12.10.1-4-s.js
@@ -5,21 +5,13 @@
 es5id: 12.10.1-4-s
 description: with statement in strict mode throws SyntaxError (strict Function)
 flags: [noStrict]
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
-  try {
+
+assert.throws(SyntaxError, function() {
     var f = Function("\
                       \'use strict\';  \
                       var o = {}; \
                       with (o) {};\
                     ");
-    return false;
-  }
-  catch (e) {
-    return (e instanceof SyntaxError);
-	
-  }
- }
-runTestCase(testcase);
+});
diff --git a/test/language/statements/with/12.10.1-7-s.js b/test/language/statements/with/12.10.1-7-s.js
index d51fb001374122068301573ec70e72f0a8b71a67..35d562653db1c2857ceee236dec1cdbf8dae5941 100644
--- a/test/language/statements/with/12.10.1-7-s.js
+++ b/test/language/statements/with/12.10.1-7-s.js
@@ -8,20 +8,13 @@ description: >
     expression, where the container function is directly evaled from
     strict code)
 flags: [onlyStrict]
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
-  try {
+
+assert.throws(SyntaxError, function() {
     eval("var f = function () {\
                 var o = {}; \
                 with (o) {}; \
              }\
         ");
-    return false;
-  }
-  catch (e) {
-    return (e instanceof SyntaxError);
-  }
- }
-runTestCase(testcase);
+});
diff --git a/test/language/statements/with/12.10.1-8-s.js b/test/language/statements/with/12.10.1-8-s.js
index 54779f38ceb7496d95e26c863184aa4733096dbb..3e1a8f52221c0ae9da938048a60970a512d4225b 100644
--- a/test/language/statements/with/12.10.1-8-s.js
+++ b/test/language/statements/with/12.10.1-8-s.js
@@ -7,11 +7,10 @@ description: >
     with statement in strict mode throws SyntaxError (function
     expression, where the container Function is strict)
 flags: [noStrict]
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
-  try {
+
+assert.throws(SyntaxError, function() {
     Function("\
               \'use strict\'; \
               var f1 = function () {\
@@ -19,10 +18,4 @@ function testcase() {
                   with (o) {}; \
                 }\
             ");
-    return false;
-  }
-  catch (e) {
-    return (e instanceof SyntaxError);
-  }
- }
-runTestCase(testcase);
+});
diff --git a/test/language/statements/with/12.10.1-9-s.js b/test/language/statements/with/12.10.1-9-s.js
index d04d1f9079e028270b3e0c9ade4f7f80f1b6232a..614c0d64398d21bac8bb3985bcb8146704f28ea4 100644
--- a/test/language/statements/with/12.10.1-9-s.js
+++ b/test/language/statements/with/12.10.1-9-s.js
@@ -7,11 +7,10 @@ description: >
     with statement in strict mode throws SyntaxError (strict function
     expression)
 flags: [noStrict]
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
-  try {
+
+assert.throws(SyntaxError, function() {
     eval("\
           var f = function () {\
                 \'use strict\';\
@@ -19,10 +18,4 @@ function testcase() {
                 with (o) {}; \
               }\
         ");
-    return false;
-  }
-  catch (e) {
-    return (e instanceof SyntaxError) ;
-  }
- }
-runTestCase(testcase);
+});
diff --git a/test/language/types/reference/8.7.2-1-s.js b/test/language/types/reference/8.7.2-1-s.js
index d9d2901081933a24caccb3ae26001951e6e1d5fb..702e61b1df496e2b6132210d1b57613463187aaf 100644
--- a/test/language/types/reference/8.7.2-1-s.js
+++ b/test/language/types/reference/8.7.2-1-s.js
@@ -7,15 +7,9 @@ description: >
     Strict Mode - ReferenceError is thrown if LeftHandSide evaluates
     to an unresolvable Reference
 flags: [onlyStrict]
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
-        try {
+
+assert.throws(ReferenceError, function() {
             eval("_8_7_2_1 = 11;");
-            return false;
-        } catch (e) {
-            return e instanceof ReferenceError;
-        }
-    }
-runTestCase(testcase);
+});
diff --git a/test/language/types/reference/8.7.2-3-s.js b/test/language/types/reference/8.7.2-3-s.js
index c6471b43f15eb7664b5a5f8445aadca5c8aacf71..cee92c58b1749a92f226473794191d3833638a72 100644
--- a/test/language/types/reference/8.7.2-3-s.js
+++ b/test/language/types/reference/8.7.2-3-s.js
@@ -7,20 +7,12 @@ description: >
     Strict Mode - TypeError is thrown if LeftHandSide is a reference
     to a non-writable data property
 flags: [onlyStrict]
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
         var _8_7_2_3 = {};
         Object.defineProperty(_8_7_2_3, "b", {
             writable: false
         });
-
-        try {
+assert.throws(TypeError, function() {
             _8_7_2_3.b = 11;
-            return false;
-        } catch (e) {
-            return e instanceof TypeError;
-        }
-    }
-runTestCase(testcase);
+});
diff --git a/test/language/types/reference/8.7.2-4-s.js b/test/language/types/reference/8.7.2-4-s.js
index 899dcbf3fadfe2a404d2a7ea68bae05a853e76d0..4a33f5543c3aada54e72254aa795486fbea199b2 100644
--- a/test/language/types/reference/8.7.2-4-s.js
+++ b/test/language/types/reference/8.7.2-4-s.js
@@ -7,21 +7,13 @@ description: >
     Strict Mode - TypeError is thrown if LeftHandSide is a reference
     to an accessor property with no setter
 flags: [onlyStrict]
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
         var _8_7_2_4 = {};
         var _8_7_2_4_bValue = 1;
         Object.defineProperty(_8_7_2_4, "b", {
             get: function () { return _8_7_2_4_bValue; }
         });
-
-        try {
+assert.throws(TypeError, function() {
             _8_7_2_4.b = 11;
-            return false;
-        } catch (e) {
-            return e instanceof TypeError;
-        }
-    }
-runTestCase(testcase);
+});
diff --git a/test/language/types/reference/8.7.2-5-s.js b/test/language/types/reference/8.7.2-5-s.js
index f5dc14a5bf5280e900891777d7ce26efc74ae3a6..f7d41a4567b15d9b9b3b6b87feaa328aaf95e630 100644
--- a/test/language/types/reference/8.7.2-5-s.js
+++ b/test/language/types/reference/8.7.2-5-s.js
@@ -7,18 +7,10 @@ description: >
     Strict Mode - TypeError is thrown if LeftHandSide is a reference
     to a non-existent property of an non-extensible object
 flags: [onlyStrict]
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
         var _8_7_2_5 = {};
         Object.preventExtensions(_8_7_2_5);
-
-        try {
+assert.throws(TypeError, function() {
             _8_7_2_5.b = 11;
-            return false;
-        } catch (e) {
-            return e instanceof TypeError;
-        }
-    }
-runTestCase(testcase);
+});