diff --git a/test/language/expressions/assignment/11.13.1-4-1.js b/test/language/expressions/assignment/11.13.1-4-1.js
index e1b73b84deea2703f88d0e6d1f243dc2f9ce5e76..a038fe33e6d679ddd5a3438d2b1917b5735274c6 100644
--- a/test/language/expressions/assignment/11.13.1-4-1.js
+++ b/test/language/expressions/assignment/11.13.1-4-1.js
@@ -8,24 +8,17 @@ description: >
     simple assignment creates property on the global object if
     LeftHandSide is an unresolvable reference
 flags: [noStrict]
-includes:
-    - runTestCase.js
-    - fnGlobalObject.js
+includes: [fnGlobalObject.js]
 ---*/
 
-function testcase() {
   function foo() {
     __ES3_1_test_suite_test_11_13_1_unique_id_3__ = 42;
   }
   foo();
 
   var desc = Object.getOwnPropertyDescriptor(fnGlobalObject(), '__ES3_1_test_suite_test_11_13_1_unique_id_3__');
-  if (desc.value === 42 &&
-      desc.writable === true &&
-      desc.enumerable === true &&
-      desc.configurable === true) {
-    delete __ES3_1_test_suite_test_11_13_1_unique_id_3__;
-    return true;
-  }  
- }
-runTestCase(testcase);
+
+assert.sameValue(desc.value, 42, 'desc.value');
+assert.sameValue(desc.writable, true, 'desc.writable');
+assert.sameValue(desc.enumerable, true, 'desc.enumerable');
+assert.sameValue(desc.configurable, true, 'desc.configurable');
diff --git a/test/language/expressions/assignment/11.13.1-4-27-s.js b/test/language/expressions/assignment/11.13.1-4-27-s.js
index 356735d6c2654ac528e82cfaa02dedbfe5981437..42893ad88a3cc7efb0c966aa42d77d502db3caf9 100644
--- a/test/language/expressions/assignment/11.13.1-4-27-s.js
+++ b/test/language/expressions/assignment/11.13.1-4-27-s.js
@@ -6,20 +6,10 @@ es5id: 11.13.1-4-27-s
 description: >
     simple assignment throws TypeError if LeftHandSide is a readonly
     property in strict mode (Global.undefined)
-includes:
-    - runTestCase.js
-    - fnGlobalObject.js
+flags: [onlyStrict]
+includes: [fnGlobalObject.js]
 ---*/
 
-function testcase() {
-    'use strict';
-
-    try {
+assert.throws(TypeError, function() {
       fnGlobalObject().undefined = 42;
-      return false;
-    }
-    catch (e) {
-      return (e instanceof TypeError);
-    }
- }
-runTestCase(testcase);
+});
diff --git a/test/language/expressions/assignment/11.13.1-4-28-s.js b/test/language/expressions/assignment/11.13.1-4-28-s.js
index 998fa4c0d80a6a771c78589e3f29d6cb2c7aba1d..ef1dfed23abf1c8a556dc6db4cce597efbbdb4a5 100644
--- a/test/language/expressions/assignment/11.13.1-4-28-s.js
+++ b/test/language/expressions/assignment/11.13.1-4-28-s.js
@@ -8,16 +8,17 @@ description: >
     appears as the LeftHandSideExpression of simple assignment(=)
     under strict mode
 flags: [onlyStrict]
-includes: [runTestCase.js]
 ---*/
 
 function testcase() {
+        var err = null;
         var blah = eval;
         try {
             eval("var eval = 20;");
-            return false;
         } catch (e) {
-            return e instanceof SyntaxError && blah === eval;
+            err = e;
         }
+        assert(err instanceof SyntaxError, 'err instanceof SyntaxError');
+        assert.sameValue(blah, eval, 'blah');
     }
-runTestCase(testcase);
+testcase();
diff --git a/test/language/expressions/assignment/11.13.1-4-29-s.js b/test/language/expressions/assignment/11.13.1-4-29-s.js
index 6f2d39c535bae3e662635718616ff524b6bde781..fedd11c6f004f7fb7f6ec585e6bd0516114428ba 100644
--- a/test/language/expressions/assignment/11.13.1-4-29-s.js
+++ b/test/language/expressions/assignment/11.13.1-4-29-s.js
@@ -8,16 +8,17 @@ description: >
     appears as the LeftHandSideExpression of simple assignment(=)
     under strict mode
 flags: [onlyStrict]
-includes: [runTestCase.js]
 ---*/
 
 function testcase() {
+        var err = null;
         var blah = arguments;
         try {
             eval("var arguments = 20;");
-            return false;
         } catch (e) {
-            return e instanceof SyntaxError && blah === arguments;
+            err = e;
         }
+        assert(err instanceof SyntaxError, 'err instanceof SyntaxError');
+        assert.sameValue(blah, arguments, 'blah');
     }
-runTestCase(testcase);
+testcase();
diff --git a/test/language/expressions/assignment/11.13.1-4-31-s.js b/test/language/expressions/assignment/11.13.1-4-31-s.js
index 5252a7ebf7d7d4049a6e74ccf8af4fac074e91a1..6fc24f0034d6c792f8cfff83a23ff6bed4457cd3 100644
--- a/test/language/expressions/assignment/11.13.1-4-31-s.js
+++ b/test/language/expressions/assignment/11.13.1-4-31-s.js
@@ -8,16 +8,17 @@ description: >
     appears as the LeftHandSideExpression (PrimaryExpression) of
     simple assignment(=) under strict mode
 flags: [onlyStrict]
-includes: [runTestCase.js]
 ---*/
 
 function testcase() {
+        var err = null;
         var blah = arguments;
         try {
             eval("(arguments) = 20;");
-            return false;
         } catch (e) {
-            return e instanceof SyntaxError && blah === arguments;
+            err = e;
         }
+        assert(err instanceof SyntaxError, 'err instanceof SyntaxError');
+        assert.sameValue(blah, arguments, 'blah');
 }
-runTestCase(testcase);
+testcase();
diff --git a/test/language/expressions/assignment/8.12.5-3-b_1.js b/test/language/expressions/assignment/8.12.5-3-b_1.js
index 74c10731a30564d9100252b1e4916986029ea0cb..7f9c962a5ab68a04961e340725d2de1eceae8417 100644
--- a/test/language/expressions/assignment/8.12.5-3-b_1.js
+++ b/test/language/expressions/assignment/8.12.5-3-b_1.js
@@ -6,15 +6,11 @@ es5id: 8.12.5-3-b_1
 description: >
     Changing the value of a data property should not affect it's
     non-value property descriptor attributes.
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
-    var origReduce = Array.prototype.reduce;
     var origDesc = Object.getOwnPropertyDescriptor(Array.prototype, "reduce");
     var newDesc;
-    
-    try {
+
         Array.prototype.reduce = function () {;};
         newDesc = Object.getOwnPropertyDescriptor(Array.prototype, "reduce");
         var descArray = [origDesc, newDesc];
@@ -22,19 +18,10 @@ function testcase() {
         for (var j in descArray) {  //Ensure no attributes are magically added to newDesc
             for (var i in descArray[j]) {
                 if (i==="value") {
-                    if (origDesc[i]===newDesc[i]) {
-                        return false;
-                    }
+                    assert.notSameValue(origDesc[i], newDesc[i], 'origDesc[i]');
                 }
-                else if (origDesc[i]!==newDesc[i]) {
-                    return false;
+                else {
+                    assert.sameValue(origDesc[i], newDesc[i], 'origDesc[i]');
                 }
             }
         }
-        return true;        
-    
-    } finally {
-        Array.prototype.reduce = origReduce;
-    }
-}
-runTestCase(testcase);
diff --git a/test/language/expressions/assignment/8.12.5-3-b_2.js b/test/language/expressions/assignment/8.12.5-3-b_2.js
index 46587dcc501253a6773403f246b704f21d7acdc4..1bee1fd6da2e2254a07e8435d5c7ba048a58b433 100644
--- a/test/language/expressions/assignment/8.12.5-3-b_2.js
+++ b/test/language/expressions/assignment/8.12.5-3-b_2.js
@@ -6,19 +6,15 @@ es5id: 8.12.5-3-b_2
 description: >
     Changing the value of a data property should not affect it's
     non-value property descriptor attributes.
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
     var tempObj = {};
     
     Object.defineProperty(tempObj, "reduce", { value:456, enumerable:false, writable:true});
-    var origReduce = tempObj.reduce;
     var origDesc = Object.getOwnPropertyDescriptor(tempObj, "reduce");
 
     var newDesc;
-    
-    try {
+
         tempObj.reduce = 123;
         newDesc = Object.getOwnPropertyDescriptor(tempObj, "reduce");
         var descArray = [origDesc, newDesc];
@@ -26,19 +22,10 @@ function testcase() {
         for (var j in descArray) {
             for (var i in descArray[j]) {
                 if (i==="value") {
-                    if (origDesc[i]===newDesc[i]) {
-                        return false;
-                    }
+                    assert.notSameValue(origDesc[i], newDesc[i], 'origDesc[i]');
                 }
-                else if (origDesc[i]!==newDesc[i]) {
-                    return false;
+                else {
+                    assert.sameValue(origDesc[i], newDesc[i], 'origDesc[i]');
                 }
             }
         }
-        return true;
-    
-    } finally {
-        tempObj.reduce = origReduce;
-    }
-}
-runTestCase(testcase);
diff --git a/test/language/expressions/assignment/8.12.5-5-b_1.js b/test/language/expressions/assignment/8.12.5-5-b_1.js
index a2f9e3e9e9800508ef0b068ce944c31acaf9d3a9..56402297f244305a69e7368b9b979ac579a12132 100644
--- a/test/language/expressions/assignment/8.12.5-5-b_1.js
+++ b/test/language/expressions/assignment/8.12.5-5-b_1.js
@@ -6,34 +6,23 @@ es5id: 8.12.5-5-b_1
 description: >
     Changing the value of an accessor property should not affect it's
     property descriptor attributes.
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
     var tempObj = {};
     
     Object.defineProperty(tempObj, "reduce", { get: function() {return 456;}, enumerable:false, set: function() {;}});
-    var origReduce = tempObj.reduce;
     var origDesc = Object.getOwnPropertyDescriptor(tempObj, "reduce");
 
     var newDesc;
-    
-    try {
+
         tempObj.reduce = 123;
         newDesc = Object.getOwnPropertyDescriptor(tempObj, "reduce");
         var descArray = [origDesc, newDesc];
         
         for (var j in descArray) {
             for (var i in descArray[j]) {
-                if (origDesc[i]!==newDesc[i]) {
-                    return false;
-                }
+                assert.sameValue(origDesc[i], newDesc[i], 'origDesc[i]');
             }
         }
-        return tempObj.reduce===456;        
-    
-    } finally {
-        tempObj.reduce = origReduce;
-    }
-}
-runTestCase(testcase);
+
+assert.sameValue(tempObj.reduce, 456, 'tempObj.reduce');
diff --git a/test/language/expressions/compound-assignment/11.13.2-6-12-s.js b/test/language/expressions/compound-assignment/11.13.2-6-12-s.js
index 5a5135b0ba1ccf6230c9c7f5ed905a3fef8521ac..b5fee73b8a3ef3b474ebe5f36719f7b796653652 100644
--- a/test/language/expressions/compound-assignment/11.13.2-6-12-s.js
+++ b/test/language/expressions/compound-assignment/11.13.2-6-12-s.js
@@ -8,16 +8,17 @@ description: >
     appear as the LeftHandSideExpression of a Compound Assignment
     operator(*=)
 flags: [onlyStrict]
-includes: [runTestCase.js]
 ---*/
 
 function testcase() {
+        var err = null;
         var blah = arguments;
         try {
             eval("arguments *= 20;");
-            return false;
         } catch (e) {
-            return e instanceof SyntaxError && blah === arguments;
+            err = e;
         }
-    }
-runTestCase(testcase);
+        assert(err instanceof SyntaxError, 'err instanceof SyntaxError');
+        assert.sameValue(blah, arguments, 'blah');
+}
+testcase();
diff --git a/test/language/expressions/compound-assignment/11.13.2-6-13-s.js b/test/language/expressions/compound-assignment/11.13.2-6-13-s.js
index 50b386204e793e71805c4deb7c7e3d09c60d2d1d..0ee92781d860b08cf9f2de69fe26653c353d8162 100644
--- a/test/language/expressions/compound-assignment/11.13.2-6-13-s.js
+++ b/test/language/expressions/compound-assignment/11.13.2-6-13-s.js
@@ -8,16 +8,17 @@ description: >
     appear as the LeftHandSideExpression of a Compound Assignment
     operator(/=)
 flags: [onlyStrict]
-includes: [runTestCase.js]
 ---*/
 
 function testcase() {
+        var err = null;
         var blah = arguments;
         try {
             eval("arguments /= 20;");
-            return false;
         } catch (e) {
-            return e instanceof SyntaxError && blah === arguments;
+            err = e;
         }
-    }
-runTestCase(testcase);
+        assert(err instanceof SyntaxError, 'err instanceof SyntaxError');
+        assert.sameValue(blah, arguments, 'blah');
+}
+testcase();
diff --git a/test/language/expressions/compound-assignment/11.13.2-6-14-s.js b/test/language/expressions/compound-assignment/11.13.2-6-14-s.js
index df9f3fcb73751b4134846c20e3caead3f9ba2251..bfc4d46116bea0192d0014b8e4b7d485dba18240 100644
--- a/test/language/expressions/compound-assignment/11.13.2-6-14-s.js
+++ b/test/language/expressions/compound-assignment/11.13.2-6-14-s.js
@@ -8,16 +8,17 @@ description: >
     appear as the LeftHandSideExpression of a Compound Assignment
     operator(%=)
 flags: [onlyStrict]
-includes: [runTestCase.js]
 ---*/
 
 function testcase() {
+        var err = null;
         var blah = arguments;
         try {
             eval("arguments %= 20;");
-            return false;
         } catch (e) {
-            return e instanceof SyntaxError && blah === arguments;
+            err = e;
         }
-    }
-runTestCase(testcase);
+        assert(err instanceof SyntaxError, 'err instanceof SyntaxError');
+        assert.sameValue(blah, arguments, 'blah');
+}
+testcase();
diff --git a/test/language/expressions/compound-assignment/11.13.2-6-15-s.js b/test/language/expressions/compound-assignment/11.13.2-6-15-s.js
index 69005682ced69b5073ce575aa65162e3168794c3..dab1683fcdf0492e211ef383c6e5579279d83184 100644
--- a/test/language/expressions/compound-assignment/11.13.2-6-15-s.js
+++ b/test/language/expressions/compound-assignment/11.13.2-6-15-s.js
@@ -8,16 +8,17 @@ description: >
     appear as the LeftHandSideExpression of a Compound Assignment
     operator(+=)
 flags: [onlyStrict]
-includes: [runTestCase.js]
 ---*/
 
 function testcase() {
+        var err = null;
         var blah = arguments;
         try {
             eval("arguments += 20;");
-            return false;
         } catch (e) {
-            return e instanceof SyntaxError && blah === arguments;
+            err = e;
         }
-    }
-runTestCase(testcase);
+        assert(err instanceof SyntaxError, 'err instanceof SyntaxError');
+        assert.sameValue(blah, arguments, 'blah');
+}
+testcase();
diff --git a/test/language/expressions/compound-assignment/11.13.2-6-16-s.js b/test/language/expressions/compound-assignment/11.13.2-6-16-s.js
index 7b8911f811acb3286a7af1453249fd37607daf7c..c93a6a29f1375a8aa60fd1d72628e5192515669a 100644
--- a/test/language/expressions/compound-assignment/11.13.2-6-16-s.js
+++ b/test/language/expressions/compound-assignment/11.13.2-6-16-s.js
@@ -8,16 +8,17 @@ description: >
     appear as the LeftHandSideExpression of a Compound Assignment
     operator(-=)
 flags: [onlyStrict]
-includes: [runTestCase.js]
 ---*/
 
 function testcase() {
+        var err = null;
         var blah = arguments;
         try {
             eval("arguments -= 20;");
-            return false;
         } catch (e) {
-            return e instanceof SyntaxError && blah === arguments;
+            err = e;
         }
-    }
-runTestCase(testcase);
+        assert(err instanceof SyntaxError, 'err instanceof SyntaxError');
+        assert.sameValue(blah, arguments, 'blah');
+}
+testcase();
diff --git a/test/language/expressions/compound-assignment/11.13.2-6-17-s.js b/test/language/expressions/compound-assignment/11.13.2-6-17-s.js
index fd7cc5ce2187fce84a21fea5efc782c7ff656921..f1621f18e256e3cc13494d2b87e3b40b79252d8d 100644
--- a/test/language/expressions/compound-assignment/11.13.2-6-17-s.js
+++ b/test/language/expressions/compound-assignment/11.13.2-6-17-s.js
@@ -8,16 +8,17 @@ description: >
     appear as the LeftHandSideExpression of a Compound Assignment
     operator(<<=)
 flags: [onlyStrict]
-includes: [runTestCase.js]
 ---*/
 
 function testcase() {
+        var err = null;
         var blah = arguments;
         try {
             eval("arguments <<= 20;");
-            return false;
         } catch (e) {
-            return e instanceof SyntaxError && blah === arguments;
+            err = e;
         }
-    }
-runTestCase(testcase);
+        assert(err instanceof SyntaxError, 'err instanceof SyntaxError');
+        assert.sameValue(blah, arguments, 'blah');
+}
+testcase();
diff --git a/test/language/expressions/compound-assignment/11.13.2-6-18-s.js b/test/language/expressions/compound-assignment/11.13.2-6-18-s.js
index 421d68a4b40b3ec9627ce15a4b3ea7d2c0f4846a..3497433db4bb9359a920ccf3d3271fc64f4b47d6 100644
--- a/test/language/expressions/compound-assignment/11.13.2-6-18-s.js
+++ b/test/language/expressions/compound-assignment/11.13.2-6-18-s.js
@@ -8,16 +8,17 @@ description: >
     appear as the LeftHandSideExpression of a Compound Assignment
     operator(>>=)
 flags: [onlyStrict]
-includes: [runTestCase.js]
 ---*/
 
 function testcase() {
+        var err = null;
         var blah = arguments;
         try {
             eval("arguments >>= 20;");
-            return false;
         } catch (e) {
-            return e instanceof SyntaxError && blah === arguments;
+            err = e;
         }
-    }
-runTestCase(testcase);
+        assert(err instanceof SyntaxError, 'err instanceof SyntaxError');
+        assert.sameValue(blah, arguments, 'blah');
+}
+testcase();
diff --git a/test/language/expressions/compound-assignment/11.13.2-6-19-s.js b/test/language/expressions/compound-assignment/11.13.2-6-19-s.js
index 6cd1363399ff06d5d1eb6feda796643a24e6d3cf..d79326cb10c1b93e6749f02bdf1628066cb19fe1 100644
--- a/test/language/expressions/compound-assignment/11.13.2-6-19-s.js
+++ b/test/language/expressions/compound-assignment/11.13.2-6-19-s.js
@@ -8,16 +8,17 @@ description: >
     appear as the LeftHandSideExpression of a Compound Assignment
     operator(>>>=)
 flags: [onlyStrict]
-includes: [runTestCase.js]
 ---*/
 
 function testcase() {
+        var err = null;
         var blah = arguments;
         try {
             eval("arguments >>>= 20;");
-            return false;
         } catch (e) {
-            return e instanceof SyntaxError && blah === arguments;
+            err = e;
         }
-    }
-runTestCase(testcase);
+        assert(err instanceof SyntaxError, 'err instanceof SyntaxError');
+        assert.sameValue(blah, arguments, 'blah');
+}
+testcase();
diff --git a/test/language/expressions/compound-assignment/11.13.2-6-20-s.js b/test/language/expressions/compound-assignment/11.13.2-6-20-s.js
index d02a0af9e19f9efa83cfc95ced501831b3c29904..2cc859231c3ef0507018a66d2b8123454376cb95 100644
--- a/test/language/expressions/compound-assignment/11.13.2-6-20-s.js
+++ b/test/language/expressions/compound-assignment/11.13.2-6-20-s.js
@@ -8,16 +8,17 @@ description: >
     appear as the LeftHandSideExpression of a Compound Assignment
     operator(&=)
 flags: [onlyStrict]
-includes: [runTestCase.js]
 ---*/
 
 function testcase() {
+        var err = null;
         var blah = arguments;
         try {
             eval("arguments &= 20;");
-            return false;
         } catch (e) {
-            return e instanceof SyntaxError && blah === arguments;
+            err = e;
         }
-    }
-runTestCase(testcase);
+        assert(err instanceof SyntaxError, 'err instanceof SyntaxError');
+        assert.sameValue(blah, arguments, 'blah');
+}
+testcase();
diff --git a/test/language/expressions/compound-assignment/11.13.2-6-21-s.js b/test/language/expressions/compound-assignment/11.13.2-6-21-s.js
index ef7c25f95688fed02f6986e9f6c53cbf2d3438ee..178dddfb21aafc03cb939b4469236735acb1427a 100644
--- a/test/language/expressions/compound-assignment/11.13.2-6-21-s.js
+++ b/test/language/expressions/compound-assignment/11.13.2-6-21-s.js
@@ -8,16 +8,17 @@ description: >
     appear as the LeftHandSideExpression of a Compound Assignment
     operator(^=)
 flags: [onlyStrict]
-includes: [runTestCase.js]
 ---*/
 
 function testcase() {
+        var err = null;
         var blah = arguments;
         try {
             eval("arguments ^= 20;");
-            return false;
         } catch (e) {
-            return e instanceof SyntaxError && blah === arguments;
+            err = e;
         }
-    }
-runTestCase(testcase);
+        assert(err instanceof SyntaxError, 'err instanceof SyntaxError');
+        assert.sameValue(blah, arguments, 'blah');
+}
+testcase();
diff --git a/test/language/expressions/compound-assignment/11.13.2-6-22-s.js b/test/language/expressions/compound-assignment/11.13.2-6-22-s.js
index 57ebde975c4e2aa04e15dc10039b8f8f5785dafc..e27d5df5cfac650203585931a720241d0693300f 100644
--- a/test/language/expressions/compound-assignment/11.13.2-6-22-s.js
+++ b/test/language/expressions/compound-assignment/11.13.2-6-22-s.js
@@ -8,16 +8,17 @@ description: >
     appear as the LeftHandSideExpression of a Compound Assignment
     operator(|=)
 flags: [onlyStrict]
-includes: [runTestCase.js]
 ---*/
 
 function testcase() {
+        var err = null;
         var blah = arguments;
         try {
             eval("arguments |= 20;");
-            return false;
         } catch (e) {
-            return e instanceof SyntaxError && blah === arguments;
+            err = e;
         }
-    }
-runTestCase(testcase);
+        assert(err instanceof SyntaxError, 'err instanceof SyntaxError');
+        assert.sameValue(blah, arguments, 'blah');
+}
+testcase();
diff --git a/test/language/expressions/delete/11.4.1-0-1.js b/test/language/expressions/delete/11.4.1-0-1.js
index bdabfbdb5f97f4b8eba6aeda12d43965b62777d8..fc5aed728f3e1690cd35a9d8a1c0d0e3790fa783 100644
--- a/test/language/expressions/delete/11.4.1-0-1.js
+++ b/test/language/expressions/delete/11.4.1-0-1.js
@@ -8,18 +8,14 @@ info: >
 es5id: 11.4.1-0-1
 description: delete operator as UnaryExpression
 flags: [noStrict]
-includes: [runTestCase.js]
 ---*/
 
 function testcase() {
   var x = 1;
   var y = 2;
   var z = 3;
-  
-  if( (!delete x || delete y) &&
-      delete delete z)
-  {
-    return true;
-  }  
+
+  assert((!delete x || delete y), '(!delete x || delete y)');
+  assert(delete delete z, 'delete delete z');
  }
-runTestCase(testcase);
+testcase();
diff --git a/test/language/expressions/delete/11.4.1-2-1.js b/test/language/expressions/delete/11.4.1-2-1.js
index 4d88210e5bb85abde003b64b41cb19491c6fc5b7..19a1de7fddc7f2c8e207bb23fa78a1d71a83afa6 100644
--- a/test/language/expressions/delete/11.4.1-2-1.js
+++ b/test/language/expressions/delete/11.4.1-2-1.js
@@ -4,13 +4,8 @@
 /*---
 es5id: 11.4.1-2-1
 description: delete operator returns true when deleting a non-reference (number)
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
   var d = delete 42;
-  if (d === true) {
-    return true;
-  }
- }
-runTestCase(testcase);
+
+assert.sameValue(d, true, 'd');
diff --git a/test/language/expressions/delete/11.4.1-4.a-11.js b/test/language/expressions/delete/11.4.1-4.a-11.js
index 282fbca47c81b2123820ef39d12552292af56883..0d1ffab2411611305ffd8bd35bcd91d2b8039caf 100644
--- a/test/language/expressions/delete/11.4.1-4.a-11.js
+++ b/test/language/expressions/delete/11.4.1-4.a-11.js
@@ -10,7 +10,6 @@ description: >
     delete operator returns true on deleting arguments
     propterties(arguments.callee)
 flags: [noStrict]
-includes: [runTestCase.js]
 ---*/
 
 function testcase() {
@@ -19,7 +18,8 @@ function testcase() {
     return (delete arguments.callee); 
   }
   var d = delete arguments.callee;
-  if(d === true && arguments.callee === undefined)
-    return true;
+
+  assert.sameValue(d, true, 'd');
+  assert.sameValue(arguments.callee, undefined, 'arguments.callee');
  }
-runTestCase(testcase);
+testcase();
diff --git a/test/language/expressions/delete/11.4.1-4.a-13.js b/test/language/expressions/delete/11.4.1-4.a-13.js
index 432685ed1c121b1170cf0e8ba7f37d03fe761a2e..628b11c935c7b6220ab9616e4d058999db7a47b8 100644
--- a/test/language/expressions/delete/11.4.1-4.a-13.js
+++ b/test/language/expressions/delete/11.4.1-4.a-13.js
@@ -8,7 +8,6 @@ info: >
 es5id: 11.4.1-4.a-13
 description: delete operator returns false when deleting Array object
 flags: [noStrict]
-includes: [runTestCase.js]
 ---*/
 
 function testcase() {
@@ -18,7 +17,7 @@ function testcase() {
 
   var d = delete a 
 
-  if(d === false && Array.isArray(a) === true)
-    return true;
+  assert.sameValue(d, false, 'd');
+  assert.sameValue(Array.isArray(a), true, 'Array.isArray(a)');
  }
-runTestCase(testcase);
+testcase();
diff --git a/test/language/expressions/delete/11.4.1-4.a-16.js b/test/language/expressions/delete/11.4.1-4.a-16.js
index 0e844ab64038e84851c1381f888563c1673f890a..9608ba8e19218767607f27989c40f507ec7c36c8 100644
--- a/test/language/expressions/delete/11.4.1-4.a-16.js
+++ b/test/language/expressions/delete/11.4.1-4.a-16.js
@@ -8,12 +8,10 @@ info: >
 es5id: 11.4.1-4.a-16
 description: delete operator returns false on deleting arguments object
 flags: [noStrict]
-includes: [runTestCase.js]
 ---*/
 
 function testcase() {
-
-  if(delete arguments === false && arguments !== undefined)
-    return true;
+  assert.sameValue(delete arguments, false, 'delete arguments');
+  assert.notSameValue(arguments, undefined, 'arguments');
  }
-runTestCase(testcase);
+testcase();
diff --git a/test/language/expressions/delete/11.4.1-4.a-17.js b/test/language/expressions/delete/11.4.1-4.a-17.js
index b9a86cd8b00f27d095b89f0ee7357c174662b290..6d441422e18bf51b02cfd8efaeb992b2751513fd 100644
--- a/test/language/expressions/delete/11.4.1-4.a-17.js
+++ b/test/language/expressions/delete/11.4.1-4.a-17.js
@@ -7,17 +7,12 @@ info: >
     language provides no way to directly exercise [[Delete]], the tests are placed here.
 es5id: 11.4.1-4.a-17
 description: delete operator returns true on deleting a arguments element
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
   function foo(a,b)
   {
     var d = delete arguments[0];
     return (d === true && arguments[0] === undefined);  
   }
 
-  if(foo(1,2) === true)
-    return true;
- }
-runTestCase(testcase);
+assert.sameValue(foo(1,2), true, 'foo(1,2)');
diff --git a/test/language/expressions/delete/11.4.1-4.a-5.js b/test/language/expressions/delete/11.4.1-4.a-5.js
index 1b7c15f94979c1210f89da85a7e7b4b9fa307f4d..f5f9157ffbcdfceabb2663744cdadc4a29fd6ab7 100644
--- a/test/language/expressions/delete/11.4.1-4.a-5.js
+++ b/test/language/expressions/delete/11.4.1-4.a-5.js
@@ -10,7 +10,6 @@ description: >
     delete operator returns false when deleting the declaration of the environment object
     inside 'with'
 flags: [noStrict]
-includes: [runTestCase.js]
 ---*/
 
 function testcase() {
@@ -21,9 +20,9 @@ function testcase() {
   {
     d = delete o;
   }
-  if (d === false && typeof(o) === 'object' && o.x === 1) {
-    return true;
-  }
-  return false;
+
+  assert.sameValue(d, false, 'd');
+  assert.sameValue(typeof(o), 'object', 'typeof(o)');
+  assert.sameValue(o.x, 1, 'o.x');
  }
-runTestCase(testcase);
+testcase();
diff --git a/test/language/expressions/delete/11.4.1-4.a-7.js b/test/language/expressions/delete/11.4.1-4.a-7.js
index 99107fb94c3cf9e7cef03d0744ff9104541e1f3e..4c9e4690d323321964a10ee89bf0bd8dec904e02 100644
--- a/test/language/expressions/delete/11.4.1-4.a-7.js
+++ b/test/language/expressions/delete/11.4.1-4.a-7.js
@@ -8,15 +8,13 @@ info: >
 es5id: 11.4.1-4.a-7
 description: delete operator inside 'eval'
 flags: [noStrict]
-includes: [runTestCase.js]
 ---*/
 
 function testcase() {
   var x = 1;
   var d = eval("delete x");
-  if (d === false && x === 1) {
-    return true;
-  }
-  return false;
+
+  assert.sameValue(d, false, 'd');
+  assert.sameValue(x, 1, 'x');
  }
-runTestCase(testcase);
+testcase();
diff --git a/test/language/expressions/delete/11.4.1-5-1.js b/test/language/expressions/delete/11.4.1-5-1.js
index 0767aa3bcb4d28e2ae8de68da8010e174445efc7..c73f564a0fa5c86f413b8471539e4d78649efb2f 100644
--- a/test/language/expressions/delete/11.4.1-5-1.js
+++ b/test/language/expressions/delete/11.4.1-5-1.js
@@ -7,7 +7,6 @@ description: >
     delete operator returns false when deleting a direct reference to
     a var
 flags: [noStrict]
-includes: [runTestCase.js]
 ---*/
 
 function testcase() {
@@ -15,7 +14,8 @@ function testcase() {
 
   // Now, deleting 'x' directly should fail;
   var d = delete x;
-  if(d === false && x === 1)
-    return true;
+
+  assert.sameValue(d, false, 'd');
+  assert.sameValue(x, 1, 'x');
  }
-runTestCase(testcase);
+testcase();
diff --git a/test/language/expressions/delete/11.4.1-5-3.js b/test/language/expressions/delete/11.4.1-5-3.js
index ff60b01c40622757ca212ee245e2d32536fc2a0e..6e2d7e4b443ed5e4d30a2d6779e978cf38ce67c2 100644
--- a/test/language/expressions/delete/11.4.1-5-3.js
+++ b/test/language/expressions/delete/11.4.1-5-3.js
@@ -7,8 +7,6 @@ description: >
     delete operator returns false when deleting a direct reference to
     a function name
 flags: [noStrict]
-includes:
-    - runTestCase.js
 ---*/
 
 function testcase() {
@@ -16,7 +14,8 @@ function testcase() {
 
   // Now, deleting 'foo' directly should fail;
   var d = delete foo;
-  if(d === false && typeof foo === 'function')
-    return true;
+
+  assert.sameValue(d, false, 'd');
+  assert.sameValue(typeof foo, 'function', 'typeof foo');
  }
-runTestCase(testcase);
+testcase();
diff --git a/test/language/expressions/object/11.1.5-0-1.js b/test/language/expressions/object/11.1.5-0-1.js
index e4bdd51ac9bc132ac4af1e2cb38c5e1ccc652d4f..9b79c64ebc4420a5d6d0f558f1da5f258337d81c 100644
--- a/test/language/expressions/object/11.1.5-0-1.js
+++ b/test/language/expressions/object/11.1.5-0-1.js
@@ -7,20 +7,16 @@ info: >
     probably be replaced by some more targeted tests.  AllenWB
 es5id: 11.1.5-0-1
 description: Object literal - get set property
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
   var s1 = "In getter";
   var s2 = "In setter";
   var s3 = "Modified by setter";
   var o;
   eval("o = {get foo(){ return s1;},set foo(arg){return s2 = s3}};");
-  if(o.foo !== s1) 
-    return false;
+
+assert.sameValue(o.foo, s1, 'o.foo');
+
   o.foo=10;
-  if(s2 !== s3) 
-    return false;
-  return true;
- }
-runTestCase(testcase);
+
+assert.sameValue(s2, s3, 's2');
diff --git a/test/language/expressions/object/11.1.5-0-2.js b/test/language/expressions/object/11.1.5-0-2.js
index da2bc92a6b6c038ad2787aa02e551354d68322f2..d21ed5f78c57f371f4c30a2a906792dfff4e9676 100644
--- a/test/language/expressions/object/11.1.5-0-2.js
+++ b/test/language/expressions/object/11.1.5-0-2.js
@@ -7,25 +7,21 @@ info: >
     probably be replaced by some more targeted tests.  AllenWB
 es5id: 11.1.5-0-2
 description: Object literal - multiple get set properties
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
   var s1 = "First getter";
   var s2 = "First setter";
   var s3 = "Second getter";
   var o;
   eval("o = {get foo(){ return s1;},set foo(arg){return s2 = s3}, get bar(){ return s3}, set bar(arg){ s3 = arg;}};");
-  if(o.foo !== s1) 
-    return false;
+
+assert.sameValue(o.foo, s1, 'o.foo');
+
   o.foo = 10;
-  if(s2 !== s3) 
-    return false;
-  if(o.bar !== s3)
-    return false;
+
+assert.sameValue(s2, s3, 's2');
+assert.sameValue(o.bar, s3, 'o.bar');
+
   o.bar = "Second setter";
-  if(o.bar !== "Second setter")
-    return false;
-  return true;
- }
-runTestCase(testcase);
+
+assert.sameValue(o.bar, "Second setter", 'o.bar');
diff --git a/test/language/expressions/postfix-decrement/11.3.2-2-1-s.js b/test/language/expressions/postfix-decrement/11.3.2-2-1-s.js
index 056988fad968bbce537959a9600f087d661ec1f0..3058aab95075ac719fbe7b13202bb2121edd50da 100644
--- a/test/language/expressions/postfix-decrement/11.3.2-2-1-s.js
+++ b/test/language/expressions/postfix-decrement/11.3.2-2-1-s.js
@@ -7,16 +7,13 @@ description: >
     Strict Mode - SyntaxError is thrown if the identifier 'arguments'
     appear as a PostfixExpression(arguments--)
 flags: [onlyStrict]
-includes: [runTestCase.js]
 ---*/
 
 function testcase() {
         var blah = arguments;
-        try {
+        assert.throws(SyntaxError, function() {
             eval("arguments--;");
-            return false;
-        } catch (e) {
-            return e instanceof SyntaxError && blah === arguments;
-        }
+        });
+        assert.sameValue(blah, arguments, 'blah');
     }
-runTestCase(testcase);
+testcase();
diff --git a/test/language/expressions/postfix-decrement/11.3.2-2-3-s.js b/test/language/expressions/postfix-decrement/11.3.2-2-3-s.js
index f4286074a9e8a4ba929df4f40104088977f25983..3a19d79acc7d15d94580d9c7c28959431593b8d7 100644
--- a/test/language/expressions/postfix-decrement/11.3.2-2-3-s.js
+++ b/test/language/expressions/postfix-decrement/11.3.2-2-3-s.js
@@ -6,12 +6,11 @@ es5id: 11.3.2-2-3-s
 description: >
     SyntaxError is not thrown if the identifier 'arguments[...]' appears as a
     PostfixExpression(arguments--)
-includes: [runTestCase.js]
 ---*/
 
 function testcase() {
         arguments[1] = 7;
         arguments[1]--;
-        return arguments[1]===6;
+        assert.sameValue(arguments[1], 6, 'arguments[1]');
     }
-runTestCase(testcase);
+testcase();
diff --git a/test/language/expressions/postfix-increment/11.3.1-2-1-s.js b/test/language/expressions/postfix-increment/11.3.1-2-1-s.js
index c45c16798de395ec1271f0eda5515bb6f3f3a82d..3c5bba388ff06ebce95a7ddf70a16e826abd34dc 100644
--- a/test/language/expressions/postfix-increment/11.3.1-2-1-s.js
+++ b/test/language/expressions/postfix-increment/11.3.1-2-1-s.js
@@ -7,16 +7,13 @@ description: >
     Strict Mode - SyntaxError is thrown if the identifier 'arguments'
     appear as a PostfixExpression(arguments++)
 flags: [onlyStrict]
-includes: [runTestCase.js]
 ---*/
 
 function testcase() {
         var blah = arguments;
-        try {
+        assert.throws(SyntaxError, function() {
             eval("arguments++;");
-            return false;
-        } catch (e) {
-            return e instanceof SyntaxError && blah === arguments;
-        }
+        });
+        assert.sameValue(blah, arguments, 'blah');
     }
-runTestCase(testcase);
+testcase();
diff --git a/test/language/expressions/postfix-increment/11.3.1-2-3-s.js b/test/language/expressions/postfix-increment/11.3.1-2-3-s.js
index 298a94130463f8863b21445f9aa05fe5e235d2b8..ac7b860457daead36a7f87d246f57c8b35650485 100644
--- a/test/language/expressions/postfix-increment/11.3.1-2-3-s.js
+++ b/test/language/expressions/postfix-increment/11.3.1-2-3-s.js
@@ -7,12 +7,11 @@ description: >
     Strict Mode - SyntaxError is not thrown if the identifier
     'arguments[...]' appears as a PostfixExpression(arguments++)
 flags: [onlyStrict]
-includes: [runTestCase.js]
 ---*/
 
 function testcase() {
         arguments[1] = 7;
         arguments[1]++;
-        return arguments[1]===8;
+        assert.sameValue(arguments[1], 8, 'arguments[1]');
     }
-runTestCase(testcase);
+testcase();
diff --git a/test/language/expressions/prefix-decrement/11.4.5-2-2-s.js b/test/language/expressions/prefix-decrement/11.4.5-2-2-s.js
index b5f1d8b13fdd75e0b254257e6563df65e8608fbf..1f0786c67a802bc31088494c8db23ad9ab00f42a 100644
--- a/test/language/expressions/prefix-decrement/11.4.5-2-2-s.js
+++ b/test/language/expressions/prefix-decrement/11.4.5-2-2-s.js
@@ -5,16 +5,13 @@
 es5id: 11.4.5-2-2-s
 description: Strict Mode - SyntaxError is thrown for --arguments
 flags: [onlyStrict]
-includes: [runTestCase.js]
 ---*/
 
 function testcase() {
         var blah = arguments;
-        try {
+        assert.throws(SyntaxError, function() {
             eval("--arguments;");
-            return false;
-        } catch (e) {
-            return e instanceof SyntaxError && blah === arguments;
-        }
+        });
+        assert.sameValue(blah, arguments, 'blah');
     }
-runTestCase(testcase);
+testcase();
diff --git a/test/language/expressions/prefix-decrement/11.4.5-2-3-s.js b/test/language/expressions/prefix-decrement/11.4.5-2-3-s.js
index 079da1a3b8b42ce57aee7daf0786ddcdb4abb6ee..2da918b9fbb156b247db0de37899b0c0650e0805 100644
--- a/test/language/expressions/prefix-decrement/11.4.5-2-3-s.js
+++ b/test/language/expressions/prefix-decrement/11.4.5-2-3-s.js
@@ -4,12 +4,11 @@
 /*---
 es5id: 11.4.5-2-3-s
 description: SyntaxError is not thrown for --arguments[...]
-includes: [runTestCase.js]
 ---*/
 
 function testcase() {
         arguments[1] = 7;
         --arguments[1];
-        return arguments[1]===6;
+        assert.sameValue(arguments[1], 6, 'arguments[1]');
     }
-runTestCase(testcase);
+testcase();
diff --git a/test/language/expressions/prefix-increment/11.4.4-2-2-s.js b/test/language/expressions/prefix-increment/11.4.4-2-2-s.js
index af0820c9549e0a3343aeae04820620f71b344cca..5d3209db9e9fa44195d504b4c857dd416b2b5983 100644
--- a/test/language/expressions/prefix-increment/11.4.4-2-2-s.js
+++ b/test/language/expressions/prefix-increment/11.4.4-2-2-s.js
@@ -5,16 +5,13 @@
 es5id: 11.4.4-2-2-s
 description: Strict Mode - SyntaxError is thrown for ++arguments
 flags: [onlyStrict]
-includes: [runTestCase.js]
 ---*/
 
 function testcase() {
         var blah = arguments;
-        try {
+        assert.throws(SyntaxError, function() {
             eval("++arguments;");
-            return false;
-        } catch (e) {
-            return e instanceof SyntaxError && blah === arguments;
-        }
+        });
+        assert.sameValue(blah, arguments, 'blah');
     }
-runTestCase(testcase);
+testcase();
diff --git a/test/language/expressions/prefix-increment/11.4.4-2-3-s.js b/test/language/expressions/prefix-increment/11.4.4-2-3-s.js
index 80a9d365b2486190acdb19e1eefd77aa67514db8..e6b3938620fb8aa1b1193170ff1aaa08a82b2afd 100644
--- a/test/language/expressions/prefix-increment/11.4.4-2-3-s.js
+++ b/test/language/expressions/prefix-increment/11.4.4-2-3-s.js
@@ -4,12 +4,11 @@
 /*---
 es5id: 11.4.4-2-3-s
 description: SyntaxError is not thrown for ++arguments[...]
-includes: [runTestCase.js]
 ---*/
 
 function testcase() {
         arguments[1] = 7;
         ++arguments[1];
-        return arguments[1]===8;
+        assert.sameValue(arguments[1], 8, 'arguments[1]');
     }
-runTestCase(testcase);
+testcase();
diff --git a/test/language/expressions/unary-minus/11.4.7-4-1.js b/test/language/expressions/unary-minus/11.4.7-4-1.js
index 170df2eebb386b26e620468556ebe042ae72897b..3c4f84373f0341e7add1f8de2a39e408e73b9196 100644
--- a/test/language/expressions/unary-minus/11.4.7-4-1.js
+++ b/test/language/expressions/unary-minus/11.4.7-4-1.js
@@ -4,10 +4,6 @@
 /*---
 es5id: 11.4.7-4-1
 description: -"" should be zero
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
-  return -"" === 0;
- }
-runTestCase(testcase);
+assert.sameValue(-"", -0, '-""');
diff --git a/test/language/expressions/unary-plus/11.4.6-2-1.js b/test/language/expressions/unary-plus/11.4.6-2-1.js
index da6da3c7ab4d4a5efb2fbb91b24ff93be7d68d87..d5ca55aea77064d28b2f79c1f0ce2963ca848218 100644
--- a/test/language/expressions/unary-plus/11.4.6-2-1.js
+++ b/test/language/expressions/unary-plus/11.4.6-2-1.js
@@ -4,10 +4,6 @@
 /*---
 es5id: 11.4.6-2-1
 description: +"" should be zero
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
-  return +"" === 0;
- }
-runTestCase(testcase);
+assert.sameValue(+"", 0, '+""');