From 73d5292b7787ac67c66c14d348d3622bcb6b0c25 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Andr=C3=A9=20Bargull?= <andre.bargull@gmail.com>
Date: Thu, 13 Aug 2015 17:34:17 +0200
Subject: [PATCH] Replace runTestCase with assert helpers
 [test/language/expressions]

---
 .../expressions/assignment/11.13.1-4-1.js     | 19 +++++-----------
 .../expressions/assignment/11.13.1-4-27-s.js  | 18 ++++-----------
 .../expressions/assignment/11.13.1-4-28-s.js  |  9 ++++----
 .../expressions/assignment/11.13.1-4-29-s.js  |  9 ++++----
 .../expressions/assignment/11.13.1-4-31-s.js  |  9 ++++----
 .../expressions/assignment/8.12.5-3-b_1.js    | 21 ++++--------------
 .../expressions/assignment/8.12.5-3-b_2.js    | 21 ++++--------------
 .../expressions/assignment/8.12.5-5-b_1.js    | 19 ++++------------
 .../compound-assignment/11.13.2-6-12-s.js     | 11 +++++-----
 .../compound-assignment/11.13.2-6-13-s.js     | 11 +++++-----
 .../compound-assignment/11.13.2-6-14-s.js     | 11 +++++-----
 .../compound-assignment/11.13.2-6-15-s.js     | 11 +++++-----
 .../compound-assignment/11.13.2-6-16-s.js     | 11 +++++-----
 .../compound-assignment/11.13.2-6-17-s.js     | 11 +++++-----
 .../compound-assignment/11.13.2-6-18-s.js     | 11 +++++-----
 .../compound-assignment/11.13.2-6-19-s.js     | 11 +++++-----
 .../compound-assignment/11.13.2-6-20-s.js     | 11 +++++-----
 .../compound-assignment/11.13.2-6-21-s.js     | 11 +++++-----
 .../compound-assignment/11.13.2-6-22-s.js     | 11 +++++-----
 .../language/expressions/delete/11.4.1-0-1.js | 12 ++++------
 .../language/expressions/delete/11.4.1-2-1.js |  9 ++------
 .../expressions/delete/11.4.1-4.a-11.js       |  8 +++----
 .../expressions/delete/11.4.1-4.a-13.js       |  7 +++---
 .../expressions/delete/11.4.1-4.a-16.js       |  8 +++----
 .../expressions/delete/11.4.1-4.a-17.js       |  7 +-----
 .../expressions/delete/11.4.1-4.a-5.js        | 11 +++++-----
 .../expressions/delete/11.4.1-4.a-7.js        | 10 ++++-----
 .../language/expressions/delete/11.4.1-5-1.js |  8 +++----
 .../language/expressions/delete/11.4.1-5-3.js |  9 ++++----
 .../language/expressions/object/11.1.5-0-1.js | 14 +++++-------
 .../language/expressions/object/11.1.5-0-2.js | 22 ++++++++-----------
 .../postfix-decrement/11.3.2-2-1-s.js         | 11 ++++------
 .../postfix-decrement/11.3.2-2-3-s.js         |  5 ++---
 .../postfix-increment/11.3.1-2-1-s.js         | 11 ++++------
 .../postfix-increment/11.3.1-2-3-s.js         |  5 ++---
 .../prefix-decrement/11.4.5-2-2-s.js          | 11 ++++------
 .../prefix-decrement/11.4.5-2-3-s.js          |  5 ++---
 .../prefix-increment/11.4.4-2-2-s.js          | 11 ++++------
 .../prefix-increment/11.4.4-2-3-s.js          |  5 ++---
 .../expressions/unary-minus/11.4.7-4-1.js     |  6 +----
 .../expressions/unary-plus/11.4.6-2-1.js      |  6 +----
 41 files changed, 177 insertions(+), 270 deletions(-)

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 e1b73b84de..a038fe33e6 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 356735d6c2..42893ad88a 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 998fa4c0d8..ef1dfed23a 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 6f2d39c535..fedd11c6f0 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 5252a7ebf7..6fc24f0034 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 74c10731a3..7f9c962a5a 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 46587dcc50..1bee1fd6da 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 a2f9e3e9e9..56402297f2 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 5a5135b0ba..b5fee73b8a 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 50b386204e..0ee92781d8 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 df9f3fcb73..bfc4d46116 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 69005682ce..dab1683fcd 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 7b8911f811..c93a6a29f1 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 fd7cc5ce21..f1621f18e2 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 421d68a4b4..3497433db4 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 6cd1363399..d79326cb10 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 d02a0af9e1..2cc859231c 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 ef7c25f956..178dddfb21 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 57ebde975c..e27d5df5cf 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 bdabfbdb5f..fc5aed728f 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 4d88210e5b..19a1de7fdd 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 282fbca47c..0d1ffab241 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 432685ed1c..628b11c935 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 0e844ab640..9608ba8e19 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 b9a86cd8b0..6d441422e1 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 1b7c15f949..f5f9157ffb 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 99107fb94c..4c9e4690d3 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 0767aa3bcb..c73f564a0f 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 ff60b01c40..6e2d7e4b44 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 e4bdd51ac9..9b79c64ebc 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 da2bc92a6b..d21ed5f78c 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 056988fad9..3058aab950 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 f4286074a9..3a19d79acc 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 c45c16798d..3c5bba388f 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 298a941304..ac7b860457 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 b5f1d8b13f..1f0786c67a 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 079da1a3b8..2da918b9fb 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 af0820c954..5d3209db9e 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 80a9d365b2..e6b3938620 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 170df2eebb..3c4f84373f 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 da6da3c7ab..d5ca55aea7 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, '+""');
-- 
GitLab