diff --git a/test/built-ins/Array/from/S22.1.2.1_T1.js b/test/built-ins/Array/from/S22.1.2.1_T1.js
index c35877b4526b8cf600a747cb4353682df9bb6b82..fd2320f76f4af0abb92901065c8fc9815e60a3b6 100644
--- a/test/built-ins/Array/from/S22.1.2.1_T1.js
+++ b/test/built-ins/Array/from/S22.1.2.1_T1.js
@@ -5,16 +5,9 @@
 es6id: 22.1.2.1_T1
 description: Testing Array.from when passed a String
 author: Hank Yates (hankyates@gmail.com)
-includes: [runTestCase.js]
 ---*/
 
-runTestCase(function () {
   var arrLikeSource = 'testValue',
       testArr = Array.from(arrLikeSource);
 
-  if (testArr.length != 9) {
-    return false;
-  }
-
-  return true;
-});
+assert.sameValue(testArr.length, 9);
diff --git a/test/built-ins/Array/from/S22.1.2.1_T2.js b/test/built-ins/Array/from/S22.1.2.1_T2.js
index 827b00360f4278c3bbc7f29b97a354acba80b6fb..138be8be030b6c752539b797e5fea2c946f52f29 100644
--- a/test/built-ins/Array/from/S22.1.2.1_T2.js
+++ b/test/built-ins/Array/from/S22.1.2.1_T2.js
@@ -5,10 +5,8 @@
 es6id: 22.1.2.1_T2
 description: Testing Array.from when passed an Object is passed
 author: Hank Yates (hankyates@gmail.com)
-includes: [runTestCase.js]
 ---*/
 
-runTestCase(function () {
   var testArr = Array.from({
     'a': 1,
     'b': '2',
@@ -16,10 +14,4 @@ runTestCase(function () {
     'length': '3'
   });
 
-  if (testArr.length != 3) {
-    return false;
-  }
-
-  return true;
-
-});
+assert.sameValue(testArr.length, 3);
diff --git a/test/built-ins/Array/from/S22.1.2.1_T3.js b/test/built-ins/Array/from/S22.1.2.1_T3.js
index 0299f36231f3ea88fa968779cf919f504f034df1..72e93ec539e99c44b73731e0f2530ce03ed800b7 100644
--- a/test/built-ins/Array/from/S22.1.2.1_T3.js
+++ b/test/built-ins/Array/from/S22.1.2.1_T3.js
@@ -5,16 +5,8 @@
 es6id: 22.1.2.1_T3
 description: Testing Array.from when passed an undefined
 author: Hank Yates (hankyates@gmail.com)
-includes: [runTestCase.js]
 ---*/
 
-runTestCase(function () {
-  try {
+assert.throws(TypeError, function() {
     Array.from(undefined);
-  } catch (e) {
-    return e instanceof TypeError;
-  }
-
-  return false;
-
 });
diff --git a/test/built-ins/Array/prototype/every/15.4.4.16-4-10.js b/test/built-ins/Array/prototype/every/15.4.4.16-4-10.js
index 6bff09afc23e4f16705b9efd3c6005ee2c28ac96..6e36f9856446418c5f1a57d96c6cb5fed3f1b3aa 100644
--- a/test/built-ins/Array/prototype/every/15.4.4.16-4-10.js
+++ b/test/built-ins/Array/prototype/every/15.4.4.16-4-10.js
@@ -6,25 +6,17 @@ es5id: 15.4.4.16-4-10
 description: >
     Array.prototype.every - the exception is not thrown if exception
     was thrown by step 2
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
-
         var obj = { 0: 11, 1: 12 };
 
         Object.defineProperty(obj, "length", {
             get: function () {
-                throw new SyntaxError();
+                throw new Test262Error();
             },
             configurable: true
         });
 
-        try {
+assert.throws(Test262Error, function() {
             Array.prototype.every.call(obj, undefined);
-            return false;
-        } catch (ex) {
-            return !(ex instanceof TypeError);
-        }
-    }
-runTestCase(testcase);
+});
diff --git a/test/built-ins/Array/prototype/every/15.4.4.16-4-11.js b/test/built-ins/Array/prototype/every/15.4.4.16-4-11.js
index 6c5a71ec6551d6a186eb6ddd37dc1d44eef54f13..7f49c16a4edc3299f2991a920401fb6fc58badc8 100644
--- a/test/built-ins/Array/prototype/every/15.4.4.16-4-11.js
+++ b/test/built-ins/Array/prototype/every/15.4.4.16-4-11.js
@@ -6,29 +6,21 @@ es5id: 15.4.4.16-4-11
 description: >
     Array.prototype.every - the exception is not thrown if exception
     was thrown by step 3
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
-
         var obj = { 0: 11, 1: 12 };
 
         Object.defineProperty(obj, "length", {
             get: function () {
                 return {
                     toString: function () {
-                        throw new SyntaxError();
+                        throw new Test262Error();
                     }
                 };
             },
             configurable: true
         });
 
-        try {
+assert.throws(Test262Error, function() {
             Array.prototype.every.call(obj, undefined);
-            return false;
-        } catch (ex) {
-            return !(ex instanceof TypeError);
-        }
-    }
-runTestCase(testcase);
+});
diff --git a/test/built-ins/Array/prototype/every/15.4.4.16-7-c-ii-7.js b/test/built-ins/Array/prototype/every/15.4.4.16-7-c-ii-7.js
index b81bc78d0286ab2159c27c95786625e9cc086b7f..bba24bca1deefc51fff186a60b8ac075ea02b28e 100644
--- a/test/built-ins/Array/prototype/every/15.4.4.16-7-c-ii-7.js
+++ b/test/built-ins/Array/prototype/every/15.4.4.16-7-c-ii-7.js
@@ -6,28 +6,22 @@ es5id: 15.4.4.16-7-c-ii-7
 description: >
     Array.prototype.every - unhandled exceptions happened in
     callbackfn terminate iteration
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
-
         var called = 0;
 
         function callbackfn(val, idx, obj) {
             called++;
             if (called === 1) {
-                throw new Error("Exception occurred in callbackfn");
+                throw new Test262Error("Exception occurred in callbackfn");
             }
             return true;
         }
 
         var obj = { 0: 11, 4: 10, 10: 8, length: 20 };
 
-        try {
+assert.throws(Test262Error, function() {
             Array.prototype.every.call(obj, callbackfn);
-            return false;
-        } catch (ex) {
-            return 1 === called;
-        }
-    }
-runTestCase(testcase);
+});
+
+assert.sameValue(called, 1, 'called');
diff --git a/test/built-ins/Array/prototype/filter/15.4.4.20-4-10.js b/test/built-ins/Array/prototype/filter/15.4.4.20-4-10.js
index 702bdd445b06bd1a75be11a636235d45057d477f..ce069c57a6e33bd603682040cc33e645bbadab99 100644
--- a/test/built-ins/Array/prototype/filter/15.4.4.20-4-10.js
+++ b/test/built-ins/Array/prototype/filter/15.4.4.20-4-10.js
@@ -6,25 +6,17 @@ es5id: 15.4.4.20-4-10
 description: >
     Array.prototype.filter - the exception is not thrown if exception
     was thrown by step 2
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
-
         var obj = { 0: 11, 1: 12 };
 
         Object.defineProperty(obj, "length", {
             get: function () {
-                throw new SyntaxError();
+                throw new Test262Error();
             },
             configurable: true
         });
 
-        try {
+assert.throws(Test262Error, function() {
             Array.prototype.filter.call(obj, undefined);
-            return false;
-        } catch (ex) {
-            return !(ex instanceof TypeError);
-        }
-    }
-runTestCase(testcase);
+});
diff --git a/test/built-ins/Array/prototype/filter/15.4.4.20-4-11.js b/test/built-ins/Array/prototype/filter/15.4.4.20-4-11.js
index 8964aa4fedc7b4e9d584af127bbed2b4f810b988..86e3eafc3dccbc84b9d1af513f744c49af6d4597 100644
--- a/test/built-ins/Array/prototype/filter/15.4.4.20-4-11.js
+++ b/test/built-ins/Array/prototype/filter/15.4.4.20-4-11.js
@@ -6,29 +6,21 @@ es5id: 15.4.4.20-4-11
 description: >
     Array.prototype.filter - the exception is not thrown if exception
     was thrown by step 3
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
-
         var obj = { 0: 11, 1: 12 };
 
         Object.defineProperty(obj, "length", {
             get: function () {
                 return {
                     toString: function () {
-                        throw new SyntaxError();
+                        throw new Test262Error();
                     }
                 };
             },
             configurable: true
         });
 
-        try {
+assert.throws(Test262Error, function() {
             Array.prototype.filter.call(obj, undefined);
-            return false;
-        } catch (ex) {
-            return !(ex instanceof TypeError);
-        }
-    }
-runTestCase(testcase);
+});
diff --git a/test/built-ins/Array/prototype/filter/15.4.4.20-5-1.js b/test/built-ins/Array/prototype/filter/15.4.4.20-5-1.js
index f24da6d49cc92165a54c3e786f7f262901e012c4..741dabfb603e6be28de7a5cdf1abebba6db098cc 100644
--- a/test/built-ins/Array/prototype/filter/15.4.4.20-5-1.js
+++ b/test/built-ins/Array/prototype/filter/15.4.4.20-5-1.js
@@ -5,10 +5,9 @@
 es5id: 15.4.4.20-5-1
 description: Array.prototype.filter - thisArg is passed
 flags: [noStrict]
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
+(function() {
         this._15_4_4_20_5_1 = false;
         var _15_4_4_20_5_1 = true;
 
@@ -17,6 +16,6 @@ function testcase() {
         }
         var srcArr = [1];
         var resArr = srcArr.filter(callbackfn);
-        return resArr.length === 0;
-    }
-runTestCase(testcase);
+
+assert.sameValue(resArr.length, 0, 'resArr.length');
+})();
diff --git a/test/built-ins/Array/prototype/filter/15.4.4.20-9-3.js b/test/built-ins/Array/prototype/filter/15.4.4.20-9-3.js
index f660f7eb12c1bd621b0407712ca9ec7cd80f5886..2e98c45afb1bfda7ec54fa7b0f9d3d601769503a 100644
--- a/test/built-ins/Array/prototype/filter/15.4.4.20-9-3.js
+++ b/test/built-ins/Array/prototype/filter/15.4.4.20-9-3.js
@@ -6,11 +6,8 @@ es5id: 15.4.4.20-9-3
 description: >
     Array.prototype.filter doesn't visit deleted elements in array
     after the call
-includes: [runTestCase.js]
 ---*/
 
-function testcase() { 
- 
   function callbackfn(val, idx, obj)
   {
     delete srcArr[2];
@@ -23,8 +20,8 @@ function testcase() {
 
   var srcArr = [1,2,3,4,5];
   var resArr = srcArr.filter(callbackfn);
-  if(resArr.length === 3 && resArr[0] === 1 && resArr[2] === 4 )    // two elements deleted
-      return true;  
-  
- }
-runTestCase(testcase);
+
+// two elements deleted
+assert.sameValue(resArr.length, 3, 'resArr.length');
+assert.sameValue(resArr[0], 1, 'resArr[0]');
+assert.sameValue(resArr[2], 4, 'resArr[2]');
diff --git a/test/built-ins/Array/prototype/filter/15.4.4.20-9-6.js b/test/built-ins/Array/prototype/filter/15.4.4.20-9-6.js
index b22c278f16a6e76932721c2fa0b375483d751d06..6a4bfc3afaf2ae83cfcb146b9bb659fe0b61d978 100644
--- a/test/built-ins/Array/prototype/filter/15.4.4.20-9-6.js
+++ b/test/built-ins/Array/prototype/filter/15.4.4.20-9-6.js
@@ -6,11 +6,8 @@ es5id: 15.4.4.20-9-6
 description: >
     Array.prototype.filter visits deleted element in array after the
     call when same index is also present in prototype
-includes: [runTestCase.js]
 ---*/
 
-function testcase() { 
- 
   function callbackfn(val, idx, obj)
   {
     delete srcArr[2];
@@ -25,8 +22,8 @@ function testcase() {
   var srcArr = [1,2,3,4,5];
   var resArr = srcArr.filter(callbackfn);
   delete Array.prototype[4];
-  if(resArr.length === 4 && resArr[0] === 1 && resArr[3] == 5)    // only one element deleted
-      return true;  
-  
- }
-runTestCase(testcase);
+
+// only one element deleted
+assert.sameValue(resArr.length, 4, 'resArr.length');
+assert.sameValue(resArr[0], 1, 'resArr[0]');
+assert.sameValue(resArr[3], 5, 'resArr[3]');
diff --git a/test/built-ins/Array/prototype/filter/15.4.4.20-9-c-iii-1-2.js b/test/built-ins/Array/prototype/filter/15.4.4.20-9-c-iii-1-2.js
index a71b2fee266892704fa87eeacc8161a706b05626..5038d64a96e8b2b634140c27728622b4dd419459 100644
--- a/test/built-ins/Array/prototype/filter/15.4.4.20-9-c-iii-1-2.js
+++ b/test/built-ins/Array/prototype/filter/15.4.4.20-9-c-iii-1-2.js
@@ -6,11 +6,8 @@ es5id: 15.4.4.20-9-c-iii-1-2
 description: >
     Array.prototype.filter - value of returned array element can be
     overwritten
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
-
         function callbackfn(val, idx, obj) {
             return true;
         }
@@ -18,12 +15,7 @@ function testcase() {
         var obj = { 0: 11, 1: 9, length: 2 };
         var newArr = Array.prototype.filter.call(obj, callbackfn);
 
-        try {
             var tempVal = newArr[1];
             newArr[1] += 1;
-            return newArr[1] !== tempVal;
-        } catch (ex) {
-            return false;
-        }
-    }
-runTestCase(testcase);
+
+assert.notSameValue(newArr[1], tempVal, 'newArr[1]');
diff --git a/test/built-ins/Array/prototype/filter/15.4.4.20-9-c-iii-1-4.js b/test/built-ins/Array/prototype/filter/15.4.4.20-9-c-iii-1-4.js
index 066cdba9a18af3cb30f3b6cc006218ff0b8f2a96..27a44717a4fc92eccd4cd0b3125cb50e6db01f54 100644
--- a/test/built-ins/Array/prototype/filter/15.4.4.20-9-c-iii-1-4.js
+++ b/test/built-ins/Array/prototype/filter/15.4.4.20-9-c-iii-1-4.js
@@ -6,11 +6,8 @@ es5id: 15.4.4.20-9-c-iii-1-4
 description: >
     Array.prototype.filter - value of returned array element can be
     changed or deleted
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
-
         function callbackfn(val, idx, obj) {
             return true;
         }
@@ -18,12 +15,8 @@ function testcase() {
         var obj = { 0: 11, 1: 9, length: 2 };
         var newArr = Array.prototype.filter.call(obj, callbackfn);
 
-        try {
             var tempVal = newArr[1];
             delete newArr[1];
-            return tempVal !== undefined && newArr[1] === undefined;
-        } catch (ex) {
-            return false;
-        }
-    }
-runTestCase(testcase);
+
+assert.notSameValue(tempVal, undefined, 'tempVal');
+assert.sameValue(newArr[1], undefined, 'newArr[1]');
diff --git a/test/built-ins/Array/prototype/filter/15.4.4.20-9-c-iii-1.js b/test/built-ins/Array/prototype/filter/15.4.4.20-9-c-iii-1.js
index d751645de30dd912bee9c4585d1c03b7c0379867..b48d4970f3f772ebf45439c5bfe67adff988c89a 100644
--- a/test/built-ins/Array/prototype/filter/15.4.4.20-9-c-iii-1.js
+++ b/test/built-ins/Array/prototype/filter/15.4.4.20-9-c-iii-1.js
@@ -6,11 +6,8 @@ es5id: 15.4.4.20-9-c-iii-1
 description: >
     Array.prototype.filter - getOwnPropertyDescriptor(all true) of
     returned array element
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
-  
   function callbackfn(val, idx, obj){
     if(val % 2)
       return true; 
@@ -19,14 +16,12 @@ function testcase() {
   }
   var srcArr = [0,1,2,3,4];
   var resArr = srcArr.filter(callbackfn);
-  if (resArr.length > 0){
-     var desc = Object.getOwnPropertyDescriptor(resArr, 1) 
-     if(desc.value === 3 &&        //srcArr[1] = true
-       desc.writable === true &&
-       desc.enumerable === true &&
-       desc.configurable === true){
-         return true;
-    }
-  }
- }
-runTestCase(testcase);
+
+assert(resArr.length > 0, 'resArr.length > 0');
+
+var desc = Object.getOwnPropertyDescriptor(resArr, 1);
+
+assert.sameValue(desc.value, 3, 'desc.value'); //srcArr[1] = true
+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/built-ins/Array/prototype/forEach/15.4.4.18-4-10.js b/test/built-ins/Array/prototype/forEach/15.4.4.18-4-10.js
index 3f73a91503fd01497db82b44d185b35af0f1f6d2..1be5b6a0edf8ffb5e1916a91cb8e40a0aa4ee8b6 100644
--- a/test/built-ins/Array/prototype/forEach/15.4.4.18-4-10.js
+++ b/test/built-ins/Array/prototype/forEach/15.4.4.18-4-10.js
@@ -6,25 +6,17 @@ es5id: 15.4.4.18-4-10
 description: >
     Array.prototype.forEach - the exception is not thrown if exception
     was thrown by step 2
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
-
         var obj = { 0: 11, 1: 12 };
 
         Object.defineProperty(obj, "length", {
             get: function () {
-                throw new SyntaxError();
+                throw new Test262Error();
             },
             configurable: true
         });
 
-        try {
+assert.throws(Test262Error, function() {
             Array.prototype.forEach.call(obj, undefined);
-            return false;
-        } catch (ex) {
-            return !(ex instanceof TypeError);
-        }
-    }
-runTestCase(testcase);
+});
diff --git a/test/built-ins/Array/prototype/forEach/15.4.4.18-4-11.js b/test/built-ins/Array/prototype/forEach/15.4.4.18-4-11.js
index 9c2d162633743e36d9b41e89d0a54d0e9069e20e..a033598f1e21af40409409df44e0504f0bbba0fb 100644
--- a/test/built-ins/Array/prototype/forEach/15.4.4.18-4-11.js
+++ b/test/built-ins/Array/prototype/forEach/15.4.4.18-4-11.js
@@ -6,29 +6,21 @@ es5id: 15.4.4.18-4-11
 description: >
     Array.prototype.forEach - the exception is not thrown if exception
     was thrown by step 3
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
-
         var obj = { 0: 11, 1: 12 };
 
         Object.defineProperty(obj, "length", {
             get: function () {
                 return {
                     toString: function () {
-                        throw new SyntaxError();
+                        throw new Test262Error();
                     }
                 };
             },
             configurable: true
         });
 
-        try {
+assert.throws(Test262Error, function() {
             Array.prototype.forEach.call(obj, undefined);
-            return false;
-        } catch (ex) {
-            return !(ex instanceof TypeError);
-        }
-    }
-runTestCase(testcase);
+});
diff --git a/test/built-ins/Array/prototype/forEach/15.4.4.18-5-1.js b/test/built-ins/Array/prototype/forEach/15.4.4.18-5-1.js
index 500c57c373eaf36a48d79210675c74b70748a025..80b584e9fc402cd0f3f82face0970b889c39fa51 100644
--- a/test/built-ins/Array/prototype/forEach/15.4.4.18-5-1.js
+++ b/test/built-ins/Array/prototype/forEach/15.4.4.18-5-1.js
@@ -5,10 +5,9 @@
 es5id: 15.4.4.18-5-1
 description: Array.prototype.forEach - thisArg is passed
 flags: [noStrict]
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
+(function() {
         this._15_4_4_18_5_1 = false;
         var _15_4_4_18_5_1 = true;
         var result;
@@ -17,6 +16,6 @@ function testcase() {
         }
         var arr = [1];
         arr.forEach(callbackfn)
-        return !result;
-    }
-runTestCase(testcase);
+
+assert.sameValue(result, false, 'result');
+})();
diff --git a/test/built-ins/Array/prototype/indexOf/15.4.4.14-10-1.js b/test/built-ins/Array/prototype/indexOf/15.4.4.14-10-1.js
index e4021265a43e074a14899c67639c955930e50ecf..f3cea59e847521bac81c3c7eda8bb63209230d0e 100644
--- a/test/built-ins/Array/prototype/indexOf/15.4.4.14-10-1.js
+++ b/test/built-ins/Array/prototype/indexOf/15.4.4.14-10-1.js
@@ -6,10 +6,8 @@ es5id: 15.4.4.14-10-1
 description: >
     Array.prototype.indexOf returns -1 for elements not present in
     array
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
   var a = new Array();
   a[100] = 1;
   a[99999] = "";  
@@ -17,21 +15,15 @@ function testcase() {
   a[5555] = 5.5;
   a[123456] = "str";
   a[5] = 1E+309;
-  if (a.indexOf(1) !== 100 || 
-      a.indexOf("") !== 99999 ||
-      a.indexOf("str") !== 123456 ||
-      a.indexOf(1E+309) !== 5 ||   //Infinity
-      a.indexOf(5.5) !== 5555 )
-  {
-    return false;
-  }
-  if (a.indexOf(true) === -1 && 
-      a.indexOf(5) === -1 &&
-      a.indexOf("str1") === -1 &&
-      a.indexOf(null) === -1 &&
-      a.indexOf(new Object()) === -1) 
-  {
-    return true;
-  }
- }
-runTestCase(testcase);
+
+assert.sameValue(a.indexOf(1), 100, 'a.indexOf(1)');
+assert.sameValue(a.indexOf(""), 99999, 'a.indexOf("")');
+assert.sameValue(a.indexOf("str"), 123456, 'a.indexOf("str")');
+assert.sameValue(a.indexOf(1E+309), 5, 'a.indexOf(1E+309)'); //Infinity
+assert.sameValue(a.indexOf(5.5), 5555, 'a.indexOf(5.5)');
+
+assert.sameValue(a.indexOf(true), -1, 'a.indexOf(true)');
+assert.sameValue(a.indexOf(5), -1, 'a.indexOf(5)');
+assert.sameValue(a.indexOf("str1"), -1, 'a.indexOf("str1")');
+assert.sameValue(a.indexOf(null), -1, 'a.indexOf(null)');
+assert.sameValue(a.indexOf(new Object()), -1, 'a.indexOf(new Object())');
diff --git a/test/built-ins/Array/prototype/indexOf/15.4.4.14-2-15.js b/test/built-ins/Array/prototype/indexOf/15.4.4.14-2-15.js
index c192a52a8073a32ae61397c711b20d55c7a529d6..5ccbbf084a433a5504ca9192702663625234b3ce 100644
--- a/test/built-ins/Array/prototype/indexOf/15.4.4.14-2-15.js
+++ b/test/built-ins/Array/prototype/indexOf/15.4.4.14-2-15.js
@@ -4,30 +4,19 @@
 /*---
 es5id: 15.4.4.14-2-15
 description: Array.prototype.indexOf - 'length' is property of the global object
-includes:
-    - runTestCase.js
-    - fnGlobalObject.js
+includes: [fnGlobalObject.js]
 ---*/
 
-function testcase() {
         var targetObj = {};
-        try {
+
             var oldLen = fnGlobalObject().length;
             fnGlobalObject().length = 2;
 
             fnGlobalObject()[1] = targetObj;
-            if (Array.prototype.indexOf.call(fnGlobalObject(), targetObj) !== 1) {
-                return false;
-            }
+
+assert.sameValue(Array.prototype.indexOf.call(fnGlobalObject(), targetObj), 1, 'Array.prototype.indexOf.call(fnGlobalObject(), targetObj)');
 
             fnGlobalObject()[1] = {};
             fnGlobalObject()[2] = targetObj;
 
-            return Array.prototype.indexOf.call(fnGlobalObject(), targetObj) === -1;
-        } finally {
-            delete fnGlobalObject()[1];
-            delete fnGlobalObject()[2];
-            fnGlobalObject().length = oldLen;
-        }
-    }
-runTestCase(testcase);
+assert.sameValue(Array.prototype.indexOf.call(fnGlobalObject(), targetObj), -1, 'Array.prototype.indexOf.call(fnGlobalObject(), targetObj)');
diff --git a/test/built-ins/Array/prototype/indexOf/15.4.4.14-3-22.js b/test/built-ins/Array/prototype/indexOf/15.4.4.14-3-22.js
index 836185e205f278fdca3e112e1911db4779a8c3c4..8c37bec86cee6082306a92e67a60bac960e93c82 100644
--- a/test/built-ins/Array/prototype/indexOf/15.4.4.14-3-22.js
+++ b/test/built-ins/Array/prototype/indexOf/15.4.4.14-3-22.js
@@ -7,11 +7,8 @@ description: >
     Array.prototype.indexOf 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 toStringAccessed = false;
         var valueOfAccessed = false;
 
@@ -29,11 +26,9 @@ function testcase() {
             }
         };
 
-        try {
+assert.throws(TypeError, function() {
             Array.prototype.indexOf.call(obj);
-            return false;
-        } catch (e) {
-            return toStringAccessed && valueOfAccessed;
-        }
-    }
-runTestCase(testcase);
+});
+
+assert(toStringAccessed, 'toStringAccessed');
+assert(valueOfAccessed, 'valueOfAccessed');
diff --git a/test/built-ins/Array/prototype/indexOf/15.4.4.14-5-1.js b/test/built-ins/Array/prototype/indexOf/15.4.4.14-5-1.js
index d56c7c1b89c13f3191da9661463c139e59ec8002..4159d5b9169609ec5a07b354f00366491f0c777f 100644
--- a/test/built-ins/Array/prototype/indexOf/15.4.4.14-5-1.js
+++ b/test/built-ins/Array/prototype/indexOf/15.4.4.14-5-1.js
@@ -4,14 +4,9 @@
 /*---
 es5id: 15.4.4.14-5-1
 description: Array.prototype.indexOf when fromIndex is string
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
   var a = [1,2,1,2,1,2];
-  if (a.indexOf(2,"2") === 3 &&          // "2" resolves to 2  
-      a.indexOf(2,"one") === 1) {       // "one" resolves to 0
-    return true;
-  }
- }
-runTestCase(testcase);
+
+assert.sameValue(a.indexOf(2,"2"), 3, '"2" resolves to 2');
+assert.sameValue(a.indexOf(2,"one"), 1, '"one" resolves to 0');
diff --git a/test/built-ins/Array/prototype/indexOf/15.4.4.14-5-2.js b/test/built-ins/Array/prototype/indexOf/15.4.4.14-5-2.js
index 96daf206f73e73bebbd14cf0942b67337e969388..40c7dac876f7778b07256025bbd22d498f382eef 100644
--- a/test/built-ins/Array/prototype/indexOf/15.4.4.14-5-2.js
+++ b/test/built-ins/Array/prototype/indexOf/15.4.4.14-5-2.js
@@ -4,15 +4,10 @@
 /*---
 es5id: 15.4.4.14-5-2
 description: Array.prototype.indexOf when fromIndex is floating point number
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
   var a = new Array(1,2,3);
-  if (a.indexOf(3,0.49) === 2 &&    // 0.49 resolves to 0
-      a.indexOf(1,0.51) === 0 &&    // 0.51 resolves to 0
-      a.indexOf(1,1.51) === -1) {   // 1.01 resolves to 1
-    return true;
-  }
- }
-runTestCase(testcase);
+
+assert.sameValue(a.indexOf(3,0.49), 2, '0.49 resolves to 0');
+assert.sameValue(a.indexOf(1,0.51), 0, '0.51 resolves to 0');
+assert.sameValue(a.indexOf(1,1.51), -1, '1.51 resolves to 1');
diff --git a/test/built-ins/Array/prototype/indexOf/15.4.4.14-5-24.js b/test/built-ins/Array/prototype/indexOf/15.4.4.14-5-24.js
index bb3f7774d0e768840f7b077a302c6663a1ddf0fb..a414dc12231f3ff2e4faa841be067b4f3b1ca62e 100644
--- a/test/built-ins/Array/prototype/indexOf/15.4.4.14-5-24.js
+++ b/test/built-ins/Array/prototype/indexOf/15.4.4.14-5-24.js
@@ -7,11 +7,8 @@ description: >
     Array.prototype.indexOf throws TypeError exception when value of
     'fromIndex' is an object with toString and valueOf methods that
     don�t return primitive values
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
-
         var toStringAccessed = false;
         var valueOfAccessed = false;
         var fromIndex = {
@@ -26,11 +23,9 @@ function testcase() {
             }
         };
 
-        try {
+assert.throws(TypeError, function() {
             [0, true].indexOf(true, fromIndex);
-            return false;
-        } catch (e) {
-            return toStringAccessed && valueOfAccessed;
-        }
-    }
-runTestCase(testcase);
+});
+
+assert(toStringAccessed, 'toStringAccessed');
+assert(valueOfAccessed, 'valueOfAccessed');
diff --git a/test/built-ins/Array/prototype/indexOf/15.4.4.14-5-26.js b/test/built-ins/Array/prototype/indexOf/15.4.4.14-5-26.js
index 1d52bad0790a73c6827f91f85452bb0acc25122b..de49b583741e0988ad95f9fdfb909fb9b2717d8f 100644
--- a/test/built-ins/Array/prototype/indexOf/15.4.4.14-5-26.js
+++ b/test/built-ins/Array/prototype/indexOf/15.4.4.14-5-26.js
@@ -6,10 +6,8 @@ es5id: 15.4.4.14-5-26
 description: >
     Array.prototype.indexOf - side effects produced by step 2 are
     visible when an exception occurs
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
         var stepTwoOccurs = false;
         var stepFiveOccurs = false;
 
@@ -33,11 +31,7 @@ function testcase() {
             }
         };
 
-        try {
             Array.prototype.indexOf.call(obj, undefined, fromIndex);
-            return stepTwoOccurs && stepFiveOccurs;
-        } catch (ex) {
-            return false;
-        }
-    }
-runTestCase(testcase);
+
+assert(stepTwoOccurs, 'stepTwoOccurs !== true');
+assert(stepFiveOccurs, 'stepFiveOccurs !== true');
diff --git a/test/built-ins/Array/prototype/indexOf/15.4.4.14-5-27.js b/test/built-ins/Array/prototype/indexOf/15.4.4.14-5-27.js
index b48daf47e29693188028e5aa6e5da176ad04bcc5..e09ca585729e222da4d749fbedc89d448b896987 100644
--- a/test/built-ins/Array/prototype/indexOf/15.4.4.14-5-27.js
+++ b/test/built-ins/Array/prototype/indexOf/15.4.4.14-5-27.js
@@ -6,10 +6,8 @@ es5id: 15.4.4.14-5-27
 description: >
     Array.prototype.indexOf - side effects produced by step 3 are
     visible when an exception occurs
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
         var stepThreeOccurs = false;
         var stepFiveOccurs = false;
 
@@ -37,11 +35,7 @@ function testcase() {
             }
         };
 
-        try {
             Array.prototype.indexOf.call(obj, undefined, fromIndex);
-            return stepThreeOccurs && stepFiveOccurs;
-        } catch (ex) {
-            return false;
-        }
-    }
-runTestCase(testcase);
+
+assert(stepThreeOccurs, 'stepThreeOccurs !== true');
+assert(stepFiveOccurs, 'stepFiveOccurs !== true');
diff --git a/test/built-ins/Array/prototype/indexOf/15.4.4.14-5-3.js b/test/built-ins/Array/prototype/indexOf/15.4.4.14-5-3.js
index 540410d8a223f7c4f30adbf65671e494a6c0f436..07634100d2c687bc66911d44e28c832a6ee86122 100644
--- a/test/built-ins/Array/prototype/indexOf/15.4.4.14-5-3.js
+++ b/test/built-ins/Array/prototype/indexOf/15.4.4.14-5-3.js
@@ -4,14 +4,9 @@
 /*---
 es5id: 15.4.4.14-5-3
 description: Array.prototype.indexOf when fromIndex is boolean
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
   var a = [1,2,3];
-  if (a.indexOf(1,true) === -1 &&        // true resolves to 1
-     a.indexOf(1,false) === 0 ) {       // false resolves to 0
-    return true;
-  }
- }
-runTestCase(testcase);
+
+assert.sameValue(a.indexOf(1,true), -1, 'true resolves to 1');
+assert.sameValue(a.indexOf(1,false), 0, 'false resolves to 0');
diff --git a/test/built-ins/Array/prototype/indexOf/15.4.4.14-5-4.js b/test/built-ins/Array/prototype/indexOf/15.4.4.14-5-4.js
index 92c6e45196c84528e1c83074df2a225a1236ec3a..53a914ea26c112e9c57390ec9796c831dc3a2d4b 100644
--- a/test/built-ins/Array/prototype/indexOf/15.4.4.14-5-4.js
+++ b/test/built-ins/Array/prototype/indexOf/15.4.4.14-5-4.js
@@ -4,13 +4,9 @@
 /*---
 es5id: 15.4.4.14-5-4
 description: Array.prototype.indexOf returns 0 if fromIndex is 'undefined'
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
   var a = [1,2,3];
-  if (a.indexOf(1,undefined) === 0) {    // undefined resolves to 0
-    return true;
-  }
- }
-runTestCase(testcase);
+
+// undefined resolves to 0
+assert.sameValue(a.indexOf(1,undefined), 0, 'a.indexOf(1,undefined)');
diff --git a/test/built-ins/Array/prototype/indexOf/15.4.4.14-5-5.js b/test/built-ins/Array/prototype/indexOf/15.4.4.14-5-5.js
index e35c5d34763c743b0e0add9ae10aa277ded10bd8..c3bdaaa833175c844a29d8b623ae9f9f46cb9c4c 100644
--- a/test/built-ins/Array/prototype/indexOf/15.4.4.14-5-5.js
+++ b/test/built-ins/Array/prototype/indexOf/15.4.4.14-5-5.js
@@ -4,13 +4,9 @@
 /*---
 es5id: 15.4.4.14-5-5
 description: Array.prototype.indexOf returns 0 if fromIndex is null
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
   var a = [1,2,3];
-  if (a.indexOf(1,null) === 0 ) {       // null resolves to 0
-    return true;
-  }
- }
-runTestCase(testcase);
+
+// null resolves to 0
+assert.sameValue(a.indexOf(1,null), 0, 'a.indexOf(1,null)');
diff --git a/test/built-ins/Array/prototype/indexOf/15.4.4.14-9-1.js b/test/built-ins/Array/prototype/indexOf/15.4.4.14-9-1.js
index 8f480f2dcaf9f439063e795e7b3907b5764ade69..fd75573cff9559ddbabd6a350b934e444b1a19e8 100644
--- a/test/built-ins/Array/prototype/indexOf/15.4.4.14-9-1.js
+++ b/test/built-ins/Array/prototype/indexOf/15.4.4.14-9-1.js
@@ -4,17 +4,11 @@
 /*---
 es5id: 15.4.4.14-9-1
 description: Array.prototype.indexOf must return correct index (boolean)
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
   var obj = {toString:function (){return true}};
   var _false = false;
   var a = [obj,"true", undefined,0,_false,null,1,"str",0,1,true,false,true,false];
-  if (a.indexOf(true) === 10 &&  //a[10]=true
-      a.indexOf(false) === 4)    //a[4] =_false
-  {
-    return true;
-  }
- }
-runTestCase(testcase);
+
+  assert.sameValue(a.indexOf(true), 10, 'a[10]=true');
+  assert.sameValue(a.indexOf(false), 4, 'a[4] =_false');
diff --git a/test/built-ins/Array/prototype/indexOf/15.4.4.14-9-10.js b/test/built-ins/Array/prototype/indexOf/15.4.4.14-9-10.js
index 41d62527c701e97c148f93aea06d89c68878b635..ec885dadd9341ed243e7cea5944bd7323cbf8b25 100644
--- a/test/built-ins/Array/prototype/indexOf/15.4.4.14-9-10.js
+++ b/test/built-ins/Array/prototype/indexOf/15.4.4.14-9-10.js
@@ -7,15 +7,9 @@ info: >
     and hence NaNs could be found using indexOf *
 es5id: 15.4.4.14-9-10
 description: Array.prototype.indexOf must return correct index (NaN)
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
   var _NaN = NaN;
   var a = new Array("NaN",undefined,0,false,null,{toString:function (){return NaN}},"false",_NaN,NaN);
-  if (a.indexOf(NaN) === -1)  // NaN is equal to nothing, including itself.
-  {
-    return true;
-  }
- }
-runTestCase(testcase);
+
+assert.sameValue(a.indexOf(NaN), -1, 'NaN is equal to nothing, including itself.');
diff --git a/test/built-ins/Array/prototype/indexOf/15.4.4.14-9-2.js b/test/built-ins/Array/prototype/indexOf/15.4.4.14-9-2.js
index 1a9195d83398b2b4aa93894021d997b969d59a05..a6f57a9a127470b55d08b713c58cbf33ae99a1cf 100644
--- a/test/built-ins/Array/prototype/indexOf/15.4.4.14-9-2.js
+++ b/test/built-ins/Array/prototype/indexOf/15.4.4.14-9-2.js
@@ -4,20 +4,14 @@
 /*---
 es5id: 15.4.4.14-9-2
 description: Array.prototype.indexOf must return correct index (Number)
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
   var obj = {toString:function (){return 0}};
   var one = 1;
   var _float = -(4/3);
   var a = new Array(false,undefined,null,"0",obj,-1.3333333333333, "str",-0,true,+0, one, 1,0, false, _float, -(4/3));
-  if (a.indexOf(-(4/3)) === 14 &&      // a[14]=_float===-(4/3)
-      a.indexOf(0) === 7      &&       // a[7] = +0, 0===+0
-      a.indexOf(-0) === 7      &&     // a[7] = +0, -0===+0
-      a.indexOf(1) === 10 )            // a[10] =one=== 1
-  {
-    return true;
-  }
- }
-runTestCase(testcase);
+
+assert.sameValue(a.indexOf(-(4/3)), 14, 'a[14]=_float===-(4/3)');
+assert.sameValue(a.indexOf(0), 7, 'a[7] = +0, 0===+0');
+assert.sameValue(a.indexOf(-0), 7, 'a[7] = +0, -0===+0');
+assert.sameValue(a.indexOf(1), 10, 'a[10] =one=== 1');
diff --git a/test/built-ins/Array/prototype/indexOf/15.4.4.14-9-3.js b/test/built-ins/Array/prototype/indexOf/15.4.4.14-9-3.js
index a128354411e312406d4a519983780aa5d8796149..7fbb3f76c1b2f22333eecde731074c55e18da05a 100644
--- a/test/built-ins/Array/prototype/indexOf/15.4.4.14-9-3.js
+++ b/test/built-ins/Array/prototype/indexOf/15.4.4.14-9-3.js
@@ -4,16 +4,10 @@
 /*---
 es5id: 15.4.4.14-9-3
 description: Array.prototype.indexOf must return correct index(string)
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
   var obj = {toString:function (){return "false"}};
   var szFalse = "false";
   var a = new Array("false1",undefined,0,false,null,1,obj,0,szFalse, "false");
-  if (a.indexOf("false") === 8)  //a[8]=szFalse
-  {
-    return true;
-  }
- }
-runTestCase(testcase);
+
+assert.sameValue(a.indexOf("false"), 8, 'a[8]=szFalse');
diff --git a/test/built-ins/Array/prototype/indexOf/15.4.4.14-9-4.js b/test/built-ins/Array/prototype/indexOf/15.4.4.14-9-4.js
index dc31bba673dd8322e742dc7e331b2bda101dce78..79c1bfbdc5f12802596bf3fe7a478864359b97b8 100644
--- a/test/built-ins/Array/prototype/indexOf/15.4.4.14-9-4.js
+++ b/test/built-ins/Array/prototype/indexOf/15.4.4.14-9-4.js
@@ -4,17 +4,11 @@
 /*---
 es5id: 15.4.4.14-9-4
 description: Array.prototype.indexOf must return correct index(undefined)
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
   var obj = {toString:function (){return undefined;}};
   var _undefined1 = undefined;
   var _undefined2;
   var a = new Array(true,0,false,null,1,"undefined",obj,1,_undefined2,_undefined1,undefined);
-  if (a.indexOf(undefined) === 8) //a[8]=_undefined2
-  {
-    return true;
-  }
- }
-runTestCase(testcase);
+
+assert.sameValue(a.indexOf(undefined), 8, 'a[8]=_undefined2');
diff --git a/test/built-ins/Array/prototype/indexOf/15.4.4.14-9-5.js b/test/built-ins/Array/prototype/indexOf/15.4.4.14-9-5.js
index 4129a36d2b8d1088e9ca553c51f0a78dd9a30fad..770a1e61ae30d84b4c7745374eece77bc04699f4 100644
--- a/test/built-ins/Array/prototype/indexOf/15.4.4.14-9-5.js
+++ b/test/built-ins/Array/prototype/indexOf/15.4.4.14-9-5.js
@@ -4,17 +4,11 @@
 /*---
 es5id: 15.4.4.14-9-5
 description: Array.prototype.indexOf must return correct index (Object)
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
   var obj1 = {toString:function (){return "false"}};
   var obj2 = {toString:function (){return "false"}};
   var obj3 = obj1;
   var a = new Array(false,undefined,0,false,null,{toString:function (){return "false"}},"false",obj2,obj1,obj3);
-  if (a.indexOf(obj3) === 8)  //a[8] = obj1;
-  {
-    return true;
-  }
- }
-runTestCase(testcase);
+
+assert.sameValue(a.indexOf(obj3), 8, 'a[8] = obj1');
diff --git a/test/built-ins/Array/prototype/indexOf/15.4.4.14-9-6.js b/test/built-ins/Array/prototype/indexOf/15.4.4.14-9-6.js
index 1a30df03e50b8ccee522decfa66396b29cf813b8..2723ca3b5eb3d24171558aea157062c0e434b893 100644
--- a/test/built-ins/Array/prototype/indexOf/15.4.4.14-9-6.js
+++ b/test/built-ins/Array/prototype/indexOf/15.4.4.14-9-6.js
@@ -4,16 +4,10 @@
 /*---
 es5id: 15.4.4.14-9-6
 description: Array.prototype.indexOf must return correct index(null)
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
   var obj = {toString:function (){return null}};
   var _null = null;
   var a = new Array(true,undefined,0,false,_null,1,"str",0,1,obj,true,false,null);
-  if (a.indexOf(null) === 4 )  //a[4]=_null
-  {
-    return true;
-  }
- }
-runTestCase(testcase);
+
+assert.sameValue(a.indexOf(null), 4, 'a[4]=_null');
diff --git a/test/built-ins/Array/prototype/lastIndexOf/15.4.4.15-2-15.js b/test/built-ins/Array/prototype/lastIndexOf/15.4.4.15-2-15.js
index 50f4d6bae1508686fc1c4a7a317737f96b174a92..c6e5c55e525ee0e3ab201027eb0b9107f92268b4 100644
--- a/test/built-ins/Array/prototype/lastIndexOf/15.4.4.15-2-15.js
+++ b/test/built-ins/Array/prototype/lastIndexOf/15.4.4.15-2-15.js
@@ -6,30 +6,19 @@ es5id: 15.4.4.15-2-15
 description: >
     Array.prototype.lastIndexOf - 'length' is property of the global
     object
-includes:
-    - runTestCase.js
-    - fnGlobalObject.js
+includes: [fnGlobalObject.js]
 ---*/
 
-function testcase() {
         var targetObj = {};
-        try {
+
             var oldLen = fnGlobalObject().length;
             fnGlobalObject().length = 2;
 
             fnGlobalObject()[1] = targetObj;
-            if (Array.prototype.lastIndexOf.call(fnGlobalObject(), targetObj) !== 1) {
-                return false;
-            }
+
+assert.sameValue(Array.prototype.lastIndexOf.call(fnGlobalObject(), targetObj), 1);
 
             fnGlobalObject()[1] = {};
             fnGlobalObject()[2] = targetObj;
 
-            return Array.prototype.lastIndexOf.call(fnGlobalObject(), targetObj) === -1;
-        } finally {
-            delete fnGlobalObject()[1];
-            delete fnGlobalObject()[2];
-            fnGlobalObject().length = oldLen;
-        }
-    }
-runTestCase(testcase);
+assert.sameValue(Array.prototype.lastIndexOf.call(fnGlobalObject(), targetObj), -1);
diff --git a/test/built-ins/Array/prototype/lastIndexOf/15.4.4.15-3-22.js b/test/built-ins/Array/prototype/lastIndexOf/15.4.4.15-3-22.js
index 0d3e63509efec50db8d0fb4fd07d05b41842fe7f..859db8d19c104112fdb8272942e56d03a69d6614 100644
--- a/test/built-ins/Array/prototype/lastIndexOf/15.4.4.15-3-22.js
+++ b/test/built-ins/Array/prototype/lastIndexOf/15.4.4.15-3-22.js
@@ -7,11 +7,8 @@ description: >
     Array.prototype.lastIndexOf 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 toStringAccessed = false;
         var valueOfAccessed = false;
 
@@ -30,11 +27,9 @@ function testcase() {
             }
         };
 
-        try {
+assert.throws(TypeError, function() {
             Array.prototype.lastIndexOf.call(obj, true);
-            return false;
-        } catch (e) {
-            return toStringAccessed && valueOfAccessed;
-        }
-    }
-runTestCase(testcase);
+});
+
+assert(toStringAccessed, 'toStringAccessed');
+assert(valueOfAccessed, 'valueOfAccessed');
diff --git a/test/built-ins/Array/prototype/lastIndexOf/15.4.4.15-3-28.js b/test/built-ins/Array/prototype/lastIndexOf/15.4.4.15-3-28.js
index 15dbb8f1b30a89fc99137e795d3de8f8fc3710c9..f5e6829a462d8871ee8617e82ddb99b8715e7761 100644
--- a/test/built-ins/Array/prototype/lastIndexOf/15.4.4.15-3-28.js
+++ b/test/built-ins/Array/prototype/lastIndexOf/15.4.4.15-3-28.js
@@ -6,11 +6,8 @@ es5id: 15.4.4.15-3-28
 description: >
     Array.prototype.lastIndexOf - value of 'length' is boundary value
     (2^32)
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
-
         var targetObj = {};
         var obj = {
             0: targetObj,
@@ -19,6 +16,4 @@ function testcase() {
             length: 4294967296
         };
 
-        return Array.prototype.lastIndexOf.call(obj, targetObj) === 4294967295; //verify length is 4294967296 finally
-    }
-runTestCase(testcase);
+assert.sameValue(Array.prototype.lastIndexOf.call(obj, targetObj), 4294967295, 'verify length is 4294967296 finally');
diff --git a/test/built-ins/Array/prototype/lastIndexOf/15.4.4.15-5-1.js b/test/built-ins/Array/prototype/lastIndexOf/15.4.4.15-5-1.js
index a151520a9fbd47a09542bbf7520ca414c9b62488..0b38e59b11afbb4c7fedaaa0fe93a91efc8d36f1 100644
--- a/test/built-ins/Array/prototype/lastIndexOf/15.4.4.15-5-1.js
+++ b/test/built-ins/Array/prototype/lastIndexOf/15.4.4.15-5-1.js
@@ -4,14 +4,9 @@
 /*---
 es5id: 15.4.4.15-5-1
 description: Array.prototype.lastIndexOf when fromIndex is string
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
   var a = new Array(0,1,1);
-  if (a.lastIndexOf(1,"1") === 1 &&          // "1" resolves to 1
-      a.lastIndexOf(1,"one") === -1) {       // NaN string resolves to 0
-    return true;
-  }
- }
-runTestCase(testcase);
+
+assert.sameValue(a.lastIndexOf(1,"1"), 1, '"1" resolves to 1');
+assert.sameValue(a.lastIndexOf(1,"one"), -1, 'NaN string resolves to 01');
diff --git a/test/built-ins/Array/prototype/lastIndexOf/15.4.4.15-5-2.js b/test/built-ins/Array/prototype/lastIndexOf/15.4.4.15-5-2.js
index 68ba3657c321a814d95431c6647d291ba01031b0..aba55fc82b1adc88d2faea355aabb276e4c796f6 100644
--- a/test/built-ins/Array/prototype/lastIndexOf/15.4.4.15-5-2.js
+++ b/test/built-ins/Array/prototype/lastIndexOf/15.4.4.15-5-2.js
@@ -4,15 +4,10 @@
 /*---
 es5id: 15.4.4.15-5-2
 description: Array.prototype.lastIndexOf when fromIndex is floating point number
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
   var a = new Array(1,2,1);
-  if (a.lastIndexOf(2,1.49) === 1 &&    // 1.49 resolves to 1
-      a.lastIndexOf(2,0.51) === -1 &&    // 0.51 resolves to 0
-      a.lastIndexOf(1,0.51) === 0){      // 0.51 resolves to 0
-    return true;
-  }
- }
-runTestCase(testcase);
+
+assert.sameValue(a.lastIndexOf(2,1.49), 1, '1.49 resolves to 1');
+assert.sameValue(a.lastIndexOf(2,0.51), -1, '0.51 resolves to 0');
+assert.sameValue(a.lastIndexOf(1,0.51), 0, '0.51 resolves to 0');
diff --git a/test/built-ins/Array/prototype/lastIndexOf/15.4.4.15-5-24.js b/test/built-ins/Array/prototype/lastIndexOf/15.4.4.15-5-24.js
index e2c7c4964dbf1f432c98da9f389b826589225d77..b67e73d4e29391fce5bffdb5e9767b06402ebc8f 100644
--- a/test/built-ins/Array/prototype/lastIndexOf/15.4.4.15-5-24.js
+++ b/test/built-ins/Array/prototype/lastIndexOf/15.4.4.15-5-24.js
@@ -7,11 +7,8 @@ description: >
     Array.prototype.lastIndexOf throws TypeError exception when value
     of 'fromIndex' is an object that both toString and valueOf methods
     than don't return primitive value
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
-
         var toStringAccessed = false;
         var valueOfAccessed = false;
 
@@ -27,11 +24,9 @@ function testcase() {
             }
         };
 
-        try {
+assert.throws(TypeError, function() {
             [0, null].lastIndexOf(null, fromIndex);
-            return false;
-        } catch (e) {
-            return toStringAccessed && valueOfAccessed;
-        }
-    }
-runTestCase(testcase);
+});
+
+assert(toStringAccessed, 'toStringAccessed');
+assert(valueOfAccessed, 'valueOfAccessed');
diff --git a/test/built-ins/Array/prototype/lastIndexOf/15.4.4.15-5-26.js b/test/built-ins/Array/prototype/lastIndexOf/15.4.4.15-5-26.js
index 276d540c75bd96ea8e0581055a5d17abe6954985..b46e57f36de0678613e3a41fc526570c5b157220 100644
--- a/test/built-ins/Array/prototype/lastIndexOf/15.4.4.15-5-26.js
+++ b/test/built-ins/Array/prototype/lastIndexOf/15.4.4.15-5-26.js
@@ -6,11 +6,8 @@ es5id: 15.4.4.15-5-26
 description: >
     Array.prototype.lastIndexOf - side effects produced by step 2 are
     visible when an exception occurs
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
-
         var stepTwoOccurs = false;
         var stepFiveOccurs = false;
         var obj = {};
@@ -33,11 +30,7 @@ function testcase() {
             }
         };
 
-        try {
             Array.prototype.lastIndexOf.call(obj, undefined, fromIndex);
-            return stepTwoOccurs && stepFiveOccurs;
-        } catch (ex) {
-            return false;
-        }
-    }
-runTestCase(testcase);
+
+assert(stepTwoOccurs, 'stepTwoOccurs !== true');
+assert(stepFiveOccurs, 'stepFiveOccurs !== true');
diff --git a/test/built-ins/Array/prototype/lastIndexOf/15.4.4.15-5-27.js b/test/built-ins/Array/prototype/lastIndexOf/15.4.4.15-5-27.js
index 838f3d003a69906ad4c70063cc8311614135fbe4..79d50042f82a46650b1124f22ca88714cb1a6025 100644
--- a/test/built-ins/Array/prototype/lastIndexOf/15.4.4.15-5-27.js
+++ b/test/built-ins/Array/prototype/lastIndexOf/15.4.4.15-5-27.js
@@ -6,11 +6,8 @@ es5id: 15.4.4.15-5-27
 description: >
     Array.prototype.lastIndexOf - side effects produced by step 3 are
     visible when an exception occurs
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
-
         var stepThreeOccurs = false;
         var stepFiveOccurs = false;
 
@@ -38,11 +35,7 @@ function testcase() {
             }
         };
 
-        try {
             Array.prototype.lastIndexOf.call(obj, undefined, fromIndex);
-            return stepThreeOccurs && stepFiveOccurs;
-        } catch (ex) {
-            return false;
-        }
-    }
-runTestCase(testcase);
+
+assert(stepThreeOccurs, 'stepThreeOccurs !== true');
+assert(stepFiveOccurs, 'stepFiveOccurs !== true');
diff --git a/test/built-ins/Array/prototype/lastIndexOf/15.4.4.15-5-3.js b/test/built-ins/Array/prototype/lastIndexOf/15.4.4.15-5-3.js
index df0c43001621d9f97f73be9e1ec8f54e25605931..8f17e00a5c052bbbfee8064825c200916d0e2856 100644
--- a/test/built-ins/Array/prototype/lastIndexOf/15.4.4.15-5-3.js
+++ b/test/built-ins/Array/prototype/lastIndexOf/15.4.4.15-5-3.js
@@ -4,14 +4,9 @@
 /*---
 es5id: 15.4.4.15-5-3
 description: Array.prototype.lastIndexOf when fromIndex is boolean
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
   var a = new Array(1,2,1);
-  if (a.lastIndexOf(2,true) === 1 &&        // true resolves to 1
-     a.lastIndexOf(2,false) === -1 ) {      // false resolves to 0
-    return true;
-  }
- }
-runTestCase(testcase);
+
+assert.sameValue(a.lastIndexOf(2,true), 1, 'true resolves to 1');
+assert.sameValue(a.lastIndexOf(2,false), -1, 'false resolves to 0');
diff --git a/test/built-ins/Array/prototype/lastIndexOf/15.4.4.15-5-4.js b/test/built-ins/Array/prototype/lastIndexOf/15.4.4.15-5-4.js
index 8f41d59c03b9e5b7a31506433305c4ade4381707..3dca6d6f93a6421c2a8bbd1248cc730de7e4c314 100644
--- a/test/built-ins/Array/prototype/lastIndexOf/15.4.4.15-5-4.js
+++ b/test/built-ins/Array/prototype/lastIndexOf/15.4.4.15-5-4.js
@@ -4,15 +4,11 @@
 /*---
 es5id: 15.4.4.15-5-4
 description: Array.prototype.lastIndexOf when fromIndex is undefined
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
   var a = new Array(1,2,1);
-  if (a.lastIndexOf(2,undefined) === -1 &&
-      a.lastIndexOf(1,undefined) === 0  &&
-      a.lastIndexOf(1) === 2)   {    // undefined resolves to 0, no second argument resolves to len
-    return true;
-  }
- }
-runTestCase(testcase);
+
+// undefined resolves to 0, no second argument resolves to len
+assert.sameValue(a.lastIndexOf(2,undefined), -1, 'a.lastIndexOf(2,undefined)');
+assert.sameValue(a.lastIndexOf(1,undefined), 0, 'a.lastIndexOf(1,undefined)');
+assert.sameValue(a.lastIndexOf(1), 2, 'a.lastIndexOf(1)');
diff --git a/test/built-ins/Array/prototype/lastIndexOf/15.4.4.15-5-5.js b/test/built-ins/Array/prototype/lastIndexOf/15.4.4.15-5-5.js
index 1417d08aa1f8e0ff6a24023f9edac62959fecf87..0b3066dd7890145e31826898697ba48087aaf481 100644
--- a/test/built-ins/Array/prototype/lastIndexOf/15.4.4.15-5-5.js
+++ b/test/built-ins/Array/prototype/lastIndexOf/15.4.4.15-5-5.js
@@ -4,13 +4,10 @@
 /*---
 es5id: 15.4.4.15-5-5
 description: Array.prototype.lastIndexOf when fromIndex is null
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
   var a = new Array(1,2,1);
-  if (a.lastIndexOf(2,null) === -1 && a.lastIndexOf(1,null) === 0) {       // null resolves to 0
-    return true;
-  }
- }
-runTestCase(testcase);
+
+// null resolves to 0
+assert.sameValue(a.lastIndexOf(2,null), -1, 'a.lastIndexOf(2,null)');
+assert.sameValue(a.lastIndexOf(1,null), 0, 'a.lastIndexOf(1,null)');
diff --git a/test/built-ins/Array/prototype/lastIndexOf/15.4.4.15-5-7.js b/test/built-ins/Array/prototype/lastIndexOf/15.4.4.15-5-7.js
index 621c9d9a9974ac075d2322a26709de23047a6421..c5ff0e677da0a9951d9231beaf63ac07945805dd 100644
--- a/test/built-ins/Array/prototype/lastIndexOf/15.4.4.15-5-7.js
+++ b/test/built-ins/Array/prototype/lastIndexOf/15.4.4.15-5-7.js
@@ -6,12 +6,7 @@ es5id: 15.4.4.15-5-7
 description: >
     Array.prototype.lastIndexOf - value of 'fromIndex' is a number
     (value is 0)
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
-
-        return [0, 100].lastIndexOf(100, 0) === -1 && // verify fromIndex is not more than 0
-            [200, 0].lastIndexOf(200, 0) === 0; // verify fromIndex is not less than 0
-    }
-runTestCase(testcase);
+assert.sameValue([0, 100].lastIndexOf(100, 0), -1, 'verify fromIndex is not more than 0');
+assert.sameValue([200, 0].lastIndexOf(200, 0), 0, 'verify fromIndex is not less than 0');
diff --git a/test/built-ins/Array/prototype/lastIndexOf/15.4.4.15-8-1.js b/test/built-ins/Array/prototype/lastIndexOf/15.4.4.15-8-1.js
index 2aa72895503135b026543b89b112924e923f3747..4bd0f4d094ae78f1c435dc3d689186412b516f8f 100644
--- a/test/built-ins/Array/prototype/lastIndexOf/15.4.4.15-8-1.js
+++ b/test/built-ins/Array/prototype/lastIndexOf/15.4.4.15-8-1.js
@@ -4,17 +4,11 @@
 /*---
 es5id: 15.4.4.15-8-1
 description: Array.prototype.lastIndexOf must return correct index(boolean)
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
   var obj = {toString:function (){return true}};
   var _false = false;
   var a = new Array(false,true,false,obj,_false,true,"true", undefined,0,null,1,"str",0,1);
-  if (a.lastIndexOf(true) === 5 &&  //a[5]=true
-      a.lastIndexOf(false) === 4)    //a[4] =_false
-  {
-    return true;
-  }
- }
-runTestCase(testcase);
+
+assert.sameValue(a.lastIndexOf(true), 5, 'a[5]=true');
+assert.sameValue(a.lastIndexOf(false), 4, 'a[4] =_false');
diff --git a/test/built-ins/Array/prototype/lastIndexOf/15.4.4.15-8-10.js b/test/built-ins/Array/prototype/lastIndexOf/15.4.4.15-8-10.js
index fa3db84c6247b53eab20d7dfe44dcf204ea4faa3..fdeb4532e158744c21df4aeeae676be7affa1a44 100644
--- a/test/built-ins/Array/prototype/lastIndexOf/15.4.4.15-8-10.js
+++ b/test/built-ins/Array/prototype/lastIndexOf/15.4.4.15-8-10.js
@@ -7,15 +7,9 @@ info: >
     and hence NaNs could be found using lastIndexOf *
 es5id: 15.4.4.15-8-10
 description: Array.prototype.lastIndexOf must return correct index (NaN)
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
   var _NaN = NaN;
   var a = new Array("NaN",_NaN,NaN, undefined,0,false,null,{toString:function (){return NaN}},"false");
-  if (a.lastIndexOf(NaN) === -1)  // NaN matches nothing, not even itself
-  {
-    return true;
-  }
- }
-runTestCase(testcase);
+
+assert.sameValue(a.lastIndexOf(NaN), -1, 'NaN matches nothing, not even itself');
diff --git a/test/built-ins/Array/prototype/lastIndexOf/15.4.4.15-8-2.js b/test/built-ins/Array/prototype/lastIndexOf/15.4.4.15-8-2.js
index e749deb93a663df6a5040b7dc67a60a53075577e..680c9db64b104a87b572ee0fd339234e4af9e1c3 100644
--- a/test/built-ins/Array/prototype/lastIndexOf/15.4.4.15-8-2.js
+++ b/test/built-ins/Array/prototype/lastIndexOf/15.4.4.15-8-2.js
@@ -4,20 +4,14 @@
 /*---
 es5id: 15.4.4.15-8-2
 description: Array.prototype.lastIndexOf must return correct index(Number)
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
   var obj = {toString:function (){return 0}};
   var one = 1;
   var _float = -(4/3);
   var a = new Array(+0,true,0,-0, false,undefined,null,"0",obj, _float,-(4/3),-1.3333333333333,"str",one, 1, false);
-  if (a.lastIndexOf(-(4/3)) === 10 &&      // a[10]=-(4/3)
-      a.lastIndexOf(0) === 3       &&       // a[3] = -0, but using === -0 and 0 are equal
-      a.lastIndexOf(-0) ===3       &&      // a[3] = -0
-      a.lastIndexOf(1) === 14 )            // a[14] = 1
-  {
-    return true;
-  }
- }
-runTestCase(testcase);
+
+assert.sameValue(a.lastIndexOf(-(4/3)), 10, 'a[10]=-(4/3)');
+assert.sameValue(a.lastIndexOf(0), 3, 'a[3] = -0, but using === -0 and 0 are equal');
+assert.sameValue(a.lastIndexOf(-0), 3, 'a[3] = -0');
+assert.sameValue(a.lastIndexOf(1), 14, 'a[14] = 1');
diff --git a/test/built-ins/Array/prototype/lastIndexOf/15.4.4.15-8-b-i-27.js b/test/built-ins/Array/prototype/lastIndexOf/15.4.4.15-8-b-i-27.js
index f28fa9d063c94e19c5105b3cc14d3825a9ae425b..b43f2cc47674fc6ae8a18e1acb9ad70c85460679 100644
--- a/test/built-ins/Array/prototype/lastIndexOf/15.4.4.15-8-b-i-27.js
+++ b/test/built-ins/Array/prototype/lastIndexOf/15.4.4.15-8-b-i-27.js
@@ -7,17 +7,14 @@ description: >
     Array.prototype.lastIndexOf applied to Arguments object which
     implements its own property get method (number of arguments is
     greater than number of parameters)
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
+var func = function (a, b) {
+  assert.sameValue(Array.prototype.lastIndexOf.call(arguments, arguments[0]), 2);
+  assert.sameValue(Array.prototype.lastIndexOf.call(arguments, arguments[3]), 3);
+  assert.sameValue(Array.prototype.lastIndexOf.call(arguments, arguments[4]), -1);
+};
 
-        var func = function (a, b) {
-            return 2 === Array.prototype.lastIndexOf.call(arguments, arguments[0]) &&
-                3 === Array.prototype.lastIndexOf.call(arguments, arguments[3]) &&
-                -1 === Array.prototype.lastIndexOf.call(arguments, arguments[4]);
-        };
-
-        return func(0, arguments, 0, Object.prototype);
-    }
-runTestCase(testcase);
+(function() {
+  func(0, arguments, 0, Object.prototype);
+})();
diff --git a/test/built-ins/Array/prototype/lastIndexOf/15.4.4.15-9-1.js b/test/built-ins/Array/prototype/lastIndexOf/15.4.4.15-9-1.js
index 56e8f6149862e089da79c89c95c1b6861ec87b61..c23ef0dd522801f987605a3d1209f50eea28051b 100644
--- a/test/built-ins/Array/prototype/lastIndexOf/15.4.4.15-9-1.js
+++ b/test/built-ins/Array/prototype/lastIndexOf/15.4.4.15-9-1.js
@@ -4,10 +4,8 @@
 /*---
 es5id: 15.4.4.15-9-1
 description: Array.prototype.lastIndexOf returns -1 for elements not present
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
   var a = new Array();
   a[100] = 1;
   a[99999] = "";  
@@ -15,21 +13,15 @@ function testcase() {
   a[5555] = 5.5;
   a[123456] = "str";
   a[5] = 1E+309;
-  if (a.lastIndexOf(1) !== 100 ||
-      a.lastIndexOf("") !== 99999 ||
-      a.lastIndexOf("str") !== 123456 ||
-      a.lastIndexOf(5.5) !== 5555 ||
-      a.lastIndexOf(1E+309) !== 5 )      
-  {
-    return false;
-  }    
-  if (a.lastIndexOf(true) === -1 && 
-      a.lastIndexOf(5) === -1 &&
-      a.lastIndexOf("str1") === -1 &&
-      a.lastIndexOf(null) === -1  &&
-      a.lastIndexOf(new Object()) === -1 ) 
-  {
-    return true;
-  }
- }
-runTestCase(testcase);
+
+assert.sameValue(a.lastIndexOf(1), 100, 'a.lastIndexOf(1)');
+assert.sameValue(a.lastIndexOf(""), 99999, 'a.lastIndexOf("")');
+assert.sameValue(a.lastIndexOf("str"), 123456, 'a.lastIndexOf("str")');
+assert.sameValue(a.lastIndexOf(5.5), 5555, 'a.lastIndexOf(5.5)');
+assert.sameValue(a.lastIndexOf(1E+309), 5, 'a.lastIndexOf(1E+309)');
+
+assert.sameValue(a.lastIndexOf(true), -1, 'a.lastIndexOf(true)');
+assert.sameValue(a.lastIndexOf(5), -1, 'a.lastIndexOf(5)');
+assert.sameValue(a.lastIndexOf("str1"), -1, 'a.lastIndexOf("str1")');
+assert.sameValue(a.lastIndexOf(null), -1, 'a.lastIndexOf(null)');
+assert.sameValue(a.lastIndexOf(new Object()), -1, 'a.lastIndexOf(new Object())');
diff --git a/test/built-ins/Array/prototype/map/15.4.4.19-4-10.js b/test/built-ins/Array/prototype/map/15.4.4.19-4-10.js
index e6a88365782381ef62faae94556bb32af4aca7a8..f68465873e148adf8df44470880921b542723f1e 100644
--- a/test/built-ins/Array/prototype/map/15.4.4.19-4-10.js
+++ b/test/built-ins/Array/prototype/map/15.4.4.19-4-10.js
@@ -6,25 +6,17 @@ es5id: 15.4.4.19-4-10
 description: >
     Array.prototype.map - the exception is not thrown if exception was
     thrown by step 2
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
-
         var obj = { 0: 11, 1: 12 };
 
         Object.defineProperty(obj, "length", {
             get: function () {
-                throw new SyntaxError();
+                throw new Test262Error();
             },
             configurable: true
         });
 
-        try {
+assert.throws(Test262Error, function() {
             Array.prototype.map.call(obj, undefined);
-            return false;
-        } catch (ex) {
-            return !(ex instanceof TypeError);
-        }
-    }
-runTestCase(testcase);
+});
diff --git a/test/built-ins/Array/prototype/map/15.4.4.19-4-11.js b/test/built-ins/Array/prototype/map/15.4.4.19-4-11.js
index 8ebf4a8be1a840dd723c6cfd2eb0531f058b3fb0..1c7334a52b58f3865b2afd9b216146d219821990 100644
--- a/test/built-ins/Array/prototype/map/15.4.4.19-4-11.js
+++ b/test/built-ins/Array/prototype/map/15.4.4.19-4-11.js
@@ -6,29 +6,21 @@ es5id: 15.4.4.19-4-11
 description: >
     Array.prototype.map - the exception is not thrown if exception was
     thrown by step 3
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
-
         var obj = { 0: 11, 1: 12 };
 
         Object.defineProperty(obj, "length", {
             get: function () {
                 return {
                     toString: function () {
-                        throw new SyntaxError();
+                        throw new Test262Error();
                     }
                 };
             },
             configurable: true
         });
 
-        try {
+assert.throws(Test262Error, function() {
             Array.prototype.map.call(obj, undefined);
-            return false;
-        } catch (ex) {
-            return !(ex instanceof TypeError);
-        }
-    }
-runTestCase(testcase);
+});
diff --git a/test/built-ins/Array/prototype/map/15.4.4.19-8-c-iii-1.js b/test/built-ins/Array/prototype/map/15.4.4.19-8-c-iii-1.js
index 6aa15e999c4ae2f2772f6f5efe80be9f58ce271a..75cb39c703838369d8bb36b40ca6afe29889a522 100644
--- a/test/built-ins/Array/prototype/map/15.4.4.19-8-c-iii-1.js
+++ b/test/built-ins/Array/prototype/map/15.4.4.19-8-c-iii-1.js
@@ -6,10 +6,7 @@ es5id: 15.4.4.19-8-c-iii-1
 description: >
     Array.prototype.map - getOwnPropertyDescriptor(all true) of
     returned array element
-includes: [runTestCase.js]
 ---*/
-
-function testcase() {
   
   function callbackfn(val, idx, obj){
 	  if(val % 2)
@@ -19,14 +16,12 @@ function testcase() {
   }
   var srcArr = [0,1,2,3,4];
   var resArr = srcArr.map(callbackfn);
-  if (resArr.length > 0){
-     var desc = Object.getOwnPropertyDescriptor(resArr, 1) 
-     if(desc.value === 3 &&        //srcArr[1] = 2*1+1 = 3
-       desc.writable === true &&
-       desc.enumerable === true &&
-       desc.configurable === true){
-         return true;
-    }
-  }
- }
-runTestCase(testcase);
+
+assert(resArr.length > 0, 'resArr.length > 0');
+
+var desc = Object.getOwnPropertyDescriptor(resArr, 1);
+
+assert.sameValue(desc.value, 3, 'desc.value'); //srcArr[1] = 2*1+1 = 3
+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/built-ins/Array/prototype/map/15.4.4.19-8-c-iii-3.js b/test/built-ins/Array/prototype/map/15.4.4.19-8-c-iii-3.js
index 622ff378b354b5da310615c5d1b9ef00c7650f77..5dd26a8fde418ef7b445c8c099fb8981b9092d58 100644
--- a/test/built-ins/Array/prototype/map/15.4.4.19-8-c-iii-3.js
+++ b/test/built-ins/Array/prototype/map/15.4.4.19-8-c-iii-3.js
@@ -6,11 +6,8 @@ es5id: 15.4.4.19-8-c-iii-3
 description: >
     Array.prototype.map - value of returned array element can be
     overwritten
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
-
         function callbackfn(val, idx, obj) {
             return 11;
         }
@@ -18,12 +15,7 @@ function testcase() {
         var obj = { 0: 11, 1: 9, length: 2 };
         var newArr = Array.prototype.map.call(obj, callbackfn);
 
-        try {
             var tempVal = newArr[1];
             newArr[1] += 1;
-            return newArr[1] !== tempVal;
-        } catch (ex) {
-            return false;
-        }
-    }
-runTestCase(testcase);
+
+assert.notSameValue(newArr[1], tempVal, 'newArr[1]');
diff --git a/test/built-ins/Array/prototype/map/15.4.4.19-8-c-iii-5.js b/test/built-ins/Array/prototype/map/15.4.4.19-8-c-iii-5.js
index 2d04906b552187d24e7cc3de1c7b04b765747ed5..bd70709ddb542cc3772f67f19304f15d8c63a6ba 100644
--- a/test/built-ins/Array/prototype/map/15.4.4.19-8-c-iii-5.js
+++ b/test/built-ins/Array/prototype/map/15.4.4.19-8-c-iii-5.js
@@ -6,11 +6,8 @@ es5id: 15.4.4.19-8-c-iii-5
 description: >
     Array.prototype.map - value of returned array element can be
     changed or deleted
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
-
         function callbackfn(val, idx, obj) {
             return true;
         }
@@ -18,12 +15,8 @@ function testcase() {
         var obj = { 0: 11, 1: 9, length: 2 };
         var newArr = Array.prototype.map.call(obj, callbackfn);
 
-        try {
             var tempVal = newArr[1];
             delete newArr[1];
-            return tempVal !== undefined && newArr[1] === undefined;
-        } catch (ex) {
-            return false;
-        }
-    }
-runTestCase(testcase);
+
+assert.notSameValue(tempVal, undefined, 'tempVal');
+assert.sameValue(newArr[1], undefined, 'newArr[1]');
diff --git a/test/built-ins/Array/prototype/reduce/15.4.4.21-4-10.js b/test/built-ins/Array/prototype/reduce/15.4.4.21-4-10.js
index 20e18205edc4fa99d2cb9a8319172670addf8b28..5b665af1542a1642f249528e46bd887f717720fa 100644
--- a/test/built-ins/Array/prototype/reduce/15.4.4.21-4-10.js
+++ b/test/built-ins/Array/prototype/reduce/15.4.4.21-4-10.js
@@ -6,25 +6,17 @@ es5id: 15.4.4.21-4-10
 description: >
     Array.prototype.reduce - the exception is not thrown if exception
     was thrown by step 2
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
-
         var obj = { 0: 11, 1: 12 };
 
         Object.defineProperty(obj, "length", {
             get: function () {
-                throw new SyntaxError();
+                throw new Test262Error();
             },
             configurable: true
         });
 
-        try {
+assert.throws(Test262Error, function() {
             Array.prototype.reduce.call(obj, undefined);
-            return false;
-        } catch (ex) {
-            return !(ex instanceof TypeError);
-        }
-    }
-runTestCase(testcase);
+});
diff --git a/test/built-ins/Array/prototype/reduce/15.4.4.21-4-11.js b/test/built-ins/Array/prototype/reduce/15.4.4.21-4-11.js
index 2b77f84c099d0b66b21a7fce74b2f35322a106ce..3c6dce4a675be27d89e276563339bd5a0e96bed6 100644
--- a/test/built-ins/Array/prototype/reduce/15.4.4.21-4-11.js
+++ b/test/built-ins/Array/prototype/reduce/15.4.4.21-4-11.js
@@ -6,29 +6,21 @@ es5id: 15.4.4.21-4-11
 description: >
     Array.prototype.reduce - the exception is not thrown if exception
     was thrown by step 3
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
-
         var obj = { 0: 11, 1: 12 };
 
         Object.defineProperty(obj, "length", {
             get: function () {
                 return {
                     toString: function () {
-                        throw new SyntaxError();
+                        throw new Test262Error();
                     }
                 };
             },
             configurable: true
         });
 
-        try {
+assert.throws(Test262Error, function() {
             Array.prototype.reduce.call(obj, undefined);
-            return false;
-        } catch (ex) {
-            return !(ex instanceof TypeError);
-        }
-    }
-runTestCase(testcase);
+});
diff --git a/test/built-ins/Array/prototype/reduce/15.4.4.21-5-12.js b/test/built-ins/Array/prototype/reduce/15.4.4.21-5-12.js
index 8b1dbfc22e2ced57352e0a60da601114395ccc7f..8228c57d2e4123e553463196f9e89910f830f204 100644
--- a/test/built-ins/Array/prototype/reduce/15.4.4.21-5-12.js
+++ b/test/built-ins/Array/prototype/reduce/15.4.4.21-5-12.js
@@ -6,11 +6,8 @@ es5id: 15.4.4.21-5-12
 description: >
     Array.prototype.reduce - the exception is not thrown if exception
     was thrown by step 2
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
-
         function callbackfn(prevVal, curVal, idx, obj) {
             return (curVal > 10);
         }
@@ -19,16 +16,11 @@ function testcase() {
 
         Object.defineProperty(obj, "length", {
             get: function () {
-                throw new SyntaxError();
+                throw new Test262Error();
             },
             configurable: true
         });
 
-        try {
+assert.throws(Test262Error, function() {
             Array.prototype.reduce.call(obj, callbackfn);
-            return false;
-        } catch (ex) {
-            return !(ex instanceof TypeError);
-        }
-    }
-runTestCase(testcase);
+});
diff --git a/test/built-ins/Array/prototype/reduce/15.4.4.21-5-13.js b/test/built-ins/Array/prototype/reduce/15.4.4.21-5-13.js
index 09e577207535ab43f182dcc32e27da291e1b29ba..f2b22add7f21dba31c477164ced34f768732fc1a 100644
--- a/test/built-ins/Array/prototype/reduce/15.4.4.21-5-13.js
+++ b/test/built-ins/Array/prototype/reduce/15.4.4.21-5-13.js
@@ -6,11 +6,8 @@ es5id: 15.4.4.21-5-13
 description: >
     Array.prototype.reduce - the exception is not thrown if exception
     was thrown by step 3
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
-
         function callbackfn(prevVal, curVal, idx, obj) {
             return (curVal > 10);
         }
@@ -21,19 +18,13 @@ function testcase() {
             get: function () {
                 return {
                     toString: function () {
-                        throw new SyntaxError();
+                        throw new Test262Error();
                     }
                 };
             },
             configurable: true
         });
 
-
-        try {
+assert.throws(Test262Error, function() {
             Array.prototype.reduce.call(obj, callbackfn);
-            return false;
-        } catch (ex) {
-            return !(ex instanceof TypeError);
-        }
-    }
-runTestCase(testcase);
+});
diff --git a/test/built-ins/Array/prototype/reduce/15.4.4.21-8-b-1.js b/test/built-ins/Array/prototype/reduce/15.4.4.21-8-b-1.js
index 911f588e6fb1f1bbd0d6f525203be38cf7e44873..453ce6bf41204aa710dd1d42139fb8ec2890602c 100644
--- a/test/built-ins/Array/prototype/reduce/15.4.4.21-8-b-1.js
+++ b/test/built-ins/Array/prototype/reduce/15.4.4.21-8-b-1.js
@@ -4,11 +4,8 @@
 /*---
 es5id: 15.4.4.21-8-b-1
 description: Array.prototype.reduce - no observable effects occur if 'len' is 0
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
-
         var accessed = false;
 
         var obj = { length: 0 };
@@ -21,11 +18,8 @@ function testcase() {
             configurable: true
         });
 
-        try {
+assert.throws(TypeError, function() {
             Array.prototype.reduce.call(obj, function () { });
-            return false;
-        } catch (ex) {
-            return !accessed;
-        }
-    }
-runTestCase(testcase);
+});
+
+assert.sameValue(accessed, false, 'accessed');
diff --git a/test/built-ins/Array/prototype/reduce/15.4.4.21-8-c-7.js b/test/built-ins/Array/prototype/reduce/15.4.4.21-8-c-7.js
index 084a2c0494093c18a741bddc0846bf711e6937ab..a74acf7bd66dd2f6af493235397053c7bdad7ed5 100644
--- a/test/built-ins/Array/prototype/reduce/15.4.4.21-8-c-7.js
+++ b/test/built-ins/Array/prototype/reduce/15.4.4.21-8-c-7.js
@@ -6,25 +6,17 @@ es5id: 15.4.4.21-8-c-7
 description: >
     Array.prototype.reduce - the exception is not thrown if exception
     was thrown by step 2
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
-
         var obj = {};
 
         Object.defineProperty(obj, "length", {
             get: function () {
-                throw new SyntaxError();
+                throw new Test262Error();
             },
             configurable: true
         });
 
-        try {
+assert.throws(Test262Error, function() {
             Array.prototype.reduce.call(obj, function () { });
-            return false;
-        } catch (ex) {
-            return !(ex instanceof TypeError);
-        }
-    }
-runTestCase(testcase);
+});
diff --git a/test/built-ins/Array/prototype/reduce/15.4.4.21-8-c-8.js b/test/built-ins/Array/prototype/reduce/15.4.4.21-8-c-8.js
index 019b6eddf594960097924f0bfc252f3642daa95e..6895790620e12c2cd3bf3d692564bdc8c27d2cbb 100644
--- a/test/built-ins/Array/prototype/reduce/15.4.4.21-8-c-8.js
+++ b/test/built-ins/Array/prototype/reduce/15.4.4.21-8-c-8.js
@@ -6,29 +6,21 @@ es5id: 15.4.4.21-8-c-8
 description: >
     Array.prototype.reduce - the exception is not thrown if exception
     was thrown by step 3
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
-
         var obj = {};
 
         Object.defineProperty(obj, "length", {
             get: function () {
                 return {
                     toString: function () {
-                        throw new SyntaxError();
+                        throw new Test262Error();
                     }
                 };
             },
             configurable: true
         });
 
-        try {
+assert.throws(Test262Error, function() {
             Array.prototype.reduce.call(obj, function () { });
-            return false;
-        } catch (ex) {
-            return !(ex instanceof TypeError);
-        }
-    }
-runTestCase(testcase);
+});
diff --git a/test/built-ins/Array/prototype/reduce/15.4.4.21-9-3.js b/test/built-ins/Array/prototype/reduce/15.4.4.21-9-3.js
index 0270290120546eac4a04adaa9694543fb70b58c5..b92e59ff2cb6089b175b8fd15f7f4c25953f452e 100644
--- a/test/built-ins/Array/prototype/reduce/15.4.4.21-9-3.js
+++ b/test/built-ins/Array/prototype/reduce/15.4.4.21-9-3.js
@@ -6,11 +6,8 @@ es5id: 15.4.4.21-9-3
 description: >
     Array.prototype.reduce doesn't visit deleted elements in array
     after the call
-includes: [runTestCase.js]
 ---*/
 
-function testcase() { 
- 
   function callbackfn(prevVal, curVal, idx, obj)  
   {
     delete arr[3];
@@ -19,8 +16,6 @@ function testcase() {
   }
 
   var arr = ['1',2,3,4,5];
-  if(arr.reduce(callbackfn) === "123"  )    // two elements deleted
-    return true;  
-  
- }
-runTestCase(testcase);
+
+// two elements deleted
+assert.sameValue(arr.reduce(callbackfn), "123", 'arr.reduce(callbackfn)');
diff --git a/test/built-ins/Array/prototype/reduce/15.4.4.21-9-6.js b/test/built-ins/Array/prototype/reduce/15.4.4.21-9-6.js
index aa3c35f0471e120d21cbb3650e0d15637bdc9e4f..709c1db2fe606637a9e9c86fa7db54de83c95b1e 100644
--- a/test/built-ins/Array/prototype/reduce/15.4.4.21-9-6.js
+++ b/test/built-ins/Array/prototype/reduce/15.4.4.21-9-6.js
@@ -6,11 +6,8 @@ es5id: 15.4.4.21-9-6
 description: >
     Array.prototype.reduce visits deleted element in array after the
     call when same index is also present in prototype
-includes: [runTestCase.js]
 ---*/
 
-function testcase() { 
- 
   function callbackfn(prevVal, curVal, idx, obj)  
   {
     delete arr[3];
@@ -23,8 +20,5 @@ function testcase() {
   var res = arr.reduce(callbackfn);
   delete Array.prototype[4];
 
-  if(res === "1235"  )    //one element acually deleted
-    return true;  
-  
- }
-runTestCase(testcase);
+//one element acually deleted
+assert.sameValue(res, "1235", 'res');
diff --git a/test/built-ins/Array/prototype/reduceRight/15.4.4.22-4-10.js b/test/built-ins/Array/prototype/reduceRight/15.4.4.22-4-10.js
index b19c529f7d2b4eef9b4598980046cb46379937ef..fe98b763d81b61a7fdf71aa3a41bb9082851e8a9 100644
--- a/test/built-ins/Array/prototype/reduceRight/15.4.4.22-4-10.js
+++ b/test/built-ins/Array/prototype/reduceRight/15.4.4.22-4-10.js
@@ -6,25 +6,17 @@ es5id: 15.4.4.22-4-10
 description: >
     Array.prototype.reduceRight - the exception is not thrown if
     exception was thrown by step 2
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
-
         var obj = { 0: 11, 1: 12 };
 
         Object.defineProperty(obj, "length", {
             get: function () {
-                throw new SyntaxError();
+                throw new Test262Error();
             },
             configurable: true
         });
 
-        try {
+assert.throws(Test262Error, function() {
             Array.prototype.reduceRight.call(obj, undefined);
-            return false;
-        } catch (ex) {
-            return !(ex instanceof TypeError);
-        }
-    }
-runTestCase(testcase);
+});
diff --git a/test/built-ins/Array/prototype/reduceRight/15.4.4.22-4-11.js b/test/built-ins/Array/prototype/reduceRight/15.4.4.22-4-11.js
index 3927b9dd6079b1c91ac20fe2cb542a4c908ee00c..49a1c44b7c04fbc08ef074912f3e6a8782fa9771 100644
--- a/test/built-ins/Array/prototype/reduceRight/15.4.4.22-4-11.js
+++ b/test/built-ins/Array/prototype/reduceRight/15.4.4.22-4-11.js
@@ -6,29 +6,21 @@ es5id: 15.4.4.22-4-11
 description: >
     Array.prototype.reduceRight - the exception is not thrown if
     exception was thrown by step 3
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
-
         var obj = { 0: 11, 1: 12 };
 
         Object.defineProperty(obj, "length", {
             get: function () {
                 return {
                     toString: function () {
-                        throw new SyntaxError();
+                        throw new Test262Error();
                     }
                 };
             },
             configurable: true
         });
 
-        try {
+assert.throws(Test262Error, function() {
             Array.prototype.reduceRight.call(obj, undefined);
-            return false;
-        } catch (ex) {
-            return !(ex instanceof TypeError);
-        }
-    }
-runTestCase(testcase);
+});
diff --git a/test/built-ins/Array/prototype/reduceRight/15.4.4.22-5-12.js b/test/built-ins/Array/prototype/reduceRight/15.4.4.22-5-12.js
index 113fa4097415c6c597326801fe56918efcfc5ece..84adaf4ef7f1c7ee3001f6b879e6c94fa613456c 100644
--- a/test/built-ins/Array/prototype/reduceRight/15.4.4.22-5-12.js
+++ b/test/built-ins/Array/prototype/reduceRight/15.4.4.22-5-12.js
@@ -6,25 +6,17 @@ es5id: 15.4.4.22-5-12
 description: >
     Array.prototype.reduceRight - the exception is not thrown if
     exception was thrown by step 2
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
-
         var obj = { 0: 11, 1: 12 };
 
         Object.defineProperty(obj, "length", {
             get: function () {
-                throw new SyntaxError();
+                throw new Test262Error();
             },
             configurable: true
         });
 
-        try {
+assert.throws(Test262Error, function() {
             Array.prototype.reduceRight.call(obj, function () { });
-            return false;
-        } catch (ex) {
-            return !(ex instanceof TypeError);
-        }
-    }
-runTestCase(testcase);
+});
diff --git a/test/built-ins/Array/prototype/reduceRight/15.4.4.22-5-13.js b/test/built-ins/Array/prototype/reduceRight/15.4.4.22-5-13.js
index 4f5873aaa353d607c0f8b3e33c213500516ea266..d0f06ac910a62889f79de4c3cb6d80179a7d9ece 100644
--- a/test/built-ins/Array/prototype/reduceRight/15.4.4.22-5-13.js
+++ b/test/built-ins/Array/prototype/reduceRight/15.4.4.22-5-13.js
@@ -6,29 +6,21 @@ es5id: 15.4.4.22-5-13
 description: >
     Array.prototype.reduceRight - the exception is not thrown if
     exception was thrown by step 3
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
-
         var obj = { 0: 11, 1: 12 };
 
         Object.defineProperty(obj, "length", {
             get: function () {
                 return {
                     toString: function () {
-                        throw new SyntaxError();
+                        throw new Test262Error();
                     }
                 };
             },
             configurable: true
         });
 
-        try {
+assert.throws(Test262Error, function() {
             Array.prototype.reduceRight.call(obj, function () { });
-            return false;
-        } catch (ex) {
-            return !(ex instanceof TypeError);
-        }
-    }
-runTestCase(testcase);
+});
diff --git a/test/built-ins/Array/prototype/reduceRight/15.4.4.22-8-b-1.js b/test/built-ins/Array/prototype/reduceRight/15.4.4.22-8-b-1.js
index 646150b2b286f9c3991ed8b0ef432ec930722d91..ac7c7dd056c2df7dfa9e02882e024e4f63a9f9e9 100644
--- a/test/built-ins/Array/prototype/reduceRight/15.4.4.22-8-b-1.js
+++ b/test/built-ins/Array/prototype/reduceRight/15.4.4.22-8-b-1.js
@@ -6,11 +6,8 @@ es5id: 15.4.4.22-8-b-1
 description: >
     Array.prototype.reduceRight - no observable effects occur if 'len'
     is 0
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
-
         var accessed = false;
 
         var obj = { length: 0 };
@@ -23,11 +20,8 @@ function testcase() {
             configurable: true
         });
 
-        try {
+assert.throws(TypeError, function() {
             Array.prototype.reduceRight.call(obj, function () { });
-            return false;
-        } catch (ex) {
-            return !accessed;
-        }
-    }
-runTestCase(testcase);
+});
+
+assert.sameValue(accessed, false, 'accessed');
diff --git a/test/built-ins/Array/prototype/reduceRight/15.4.4.22-8-c-7.js b/test/built-ins/Array/prototype/reduceRight/15.4.4.22-8-c-7.js
index 7c9c24c94c7e454574325e202728d03bff83a730..f5a7c93c3563611628f8dead9e1ebec043bf79a5 100644
--- a/test/built-ins/Array/prototype/reduceRight/15.4.4.22-8-c-7.js
+++ b/test/built-ins/Array/prototype/reduceRight/15.4.4.22-8-c-7.js
@@ -6,25 +6,17 @@ es5id: 15.4.4.22-8-c-7
 description: >
     Array.prototype.reduceRight - the exception is not thrown if
     exception was thrown by step 2
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
-
         var obj = {};
 
         Object.defineProperty(obj, "length", {
             get: function () {
-                throw new SyntaxError();
+                throw new Test262Error();
             },
             configurable: true
         });
 
-        try {
+assert.throws(Test262Error, function() {
             Array.prototype.reduceRight.call(obj, function () { });
-            return false;
-        } catch (ex) {
-            return !(ex instanceof TypeError);
-        }
-    }
-runTestCase(testcase);
+});
diff --git a/test/built-ins/Array/prototype/reduceRight/15.4.4.22-8-c-8.js b/test/built-ins/Array/prototype/reduceRight/15.4.4.22-8-c-8.js
index c83379d5d58c7322501cc976121d86fcb55d32c1..d049897bddec8c3659912989ce9874c69e36efc6 100644
--- a/test/built-ins/Array/prototype/reduceRight/15.4.4.22-8-c-8.js
+++ b/test/built-ins/Array/prototype/reduceRight/15.4.4.22-8-c-8.js
@@ -6,29 +6,21 @@ es5id: 15.4.4.22-8-c-8
 description: >
     Array.prototype.reduceRight - the exception is not thrown if
     exception was thrown by step 3
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
-
         var obj = {};
 
         Object.defineProperty(obj, "length", {
             get: function () {
                 return {
                     toString: function () {
-                        throw new SyntaxError();
+                        throw new Test262Error();
                     }
                 };
             },
             configurable: true
         });
 
-        try {
+assert.throws(Test262Error, function() {
             Array.prototype.reduceRight.call(obj, function () { });
-            return false;
-        } catch (ex) {
-            return !(ex instanceof TypeError);
-        }
-    }
-runTestCase(testcase);
+});
diff --git a/test/built-ins/Array/prototype/reduceRight/15.4.4.22-9-3.js b/test/built-ins/Array/prototype/reduceRight/15.4.4.22-9-3.js
index eafe439e8718ce45713a014e91f0d2dbd8a79e2e..e7e827c77fbd0a8e404daf37885f4197b240067b 100644
--- a/test/built-ins/Array/prototype/reduceRight/15.4.4.22-9-3.js
+++ b/test/built-ins/Array/prototype/reduceRight/15.4.4.22-9-3.js
@@ -6,11 +6,8 @@ es5id: 15.4.4.22-9-3
 description: >
     Array.prototype.reduceRight doesn't consider unvisited deleted
     elements in array after the call
-includes: [runTestCase.js]
 ---*/
 
-function testcase() { 
- 
   function callbackfn(prevVal, curVal, idx, obj)  
   {
     delete arr[1];
@@ -19,8 +16,6 @@ function testcase() {
   }
 
   var arr = ['1',2,3,4,5];
-  if(arr.reduceRight(callbackfn) === "121" )    // two elements deleted
-    return true;  
-  
- }
-runTestCase(testcase);
+
+// two elements deleted
+assert.sameValue(arr.reduceRight(callbackfn), "121", 'arr.reduceRight(callbackfn)');
diff --git a/test/built-ins/Array/prototype/reduceRight/15.4.4.22-9-6.js b/test/built-ins/Array/prototype/reduceRight/15.4.4.22-9-6.js
index 435f5ebc9a1603c13f5f1515ef1ea37ee9255385..dccd40ec58a2e1203f6bb8d3746f9db6d3d335d6 100644
--- a/test/built-ins/Array/prototype/reduceRight/15.4.4.22-9-6.js
+++ b/test/built-ins/Array/prototype/reduceRight/15.4.4.22-9-6.js
@@ -6,11 +6,8 @@ es5id: 15.4.4.22-9-6
 description: >
     Array.prototype.reduceRight visits deleted element in array after
     the call when same index is also present in prototype
-includes: [runTestCase.js]
 ---*/
 
-function testcase() { 
- 
   function callbackfn(prevVal, curVal, idx, obj)  
   {
     delete arr[1];
@@ -22,8 +19,5 @@ function testcase() {
   var res = arr.reduceRight(callbackfn);
   delete Array.prototype[2];
 
-  if(res === "151" )    //one element deleted
-    return true;  
-  
- }
-runTestCase(testcase);
+//one element deleted
+assert.sameValue(res, "151", 'res');
diff --git a/test/built-ins/Array/prototype/reduceRight/15.4.4.22-9-c-i-33.js b/test/built-ins/Array/prototype/reduceRight/15.4.4.22-9-c-i-33.js
index 6eeac93a3facd17ab2ef7fa953bcaa1797fb1f9f..3e31b8ffa5ea4618f7470d9291c042172d7226b6 100644
--- a/test/built-ins/Array/prototype/reduceRight/15.4.4.22-9-c-i-33.js
+++ b/test/built-ins/Array/prototype/reduceRight/15.4.4.22-9-c-i-33.js
@@ -6,11 +6,8 @@ es5id: 15.4.4.22-9-c-i-33
 description: >
     Array.prototype.reduceRight - unnhandled exceptions happened in
     getter terminate iteration on an Array
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
-
         var accessed = false;
         function callbackfn(prevVal, curVal, idx, obj) {
             if (idx <= 1) {
@@ -22,16 +19,13 @@ function testcase() {
 
         Object.defineProperty(arr, "1", {
             get: function () {
-                throw new RangeError("unhandle exception happened in getter");
+                throw new Test262Error("unhandle exception happened in getter");
             },
             configurable: true
         });
 
-        try {
+assert.throws(Test262Error, function() {
             arr.reduceRight(callbackfn, "initialValue");
-            return true;
-        } 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-9-c-ii-7.js b/test/built-ins/Array/prototype/reduceRight/15.4.4.22-9-c-ii-7.js
index 8315b75ceabd4987e5d5c1b86c9f31b4b00d0364..f4d88297edcdb73e731bd30c301a55ee97aeaa07 100644
--- a/test/built-ins/Array/prototype/reduceRight/15.4.4.22-9-c-ii-7.js
+++ b/test/built-ins/Array/prototype/reduceRight/15.4.4.22-9-c-ii-7.js
@@ -6,11 +6,8 @@ es5id: 15.4.4.22-9-c-ii-7
 description: >
     Array.prototype.reduceRight - unhandled exceptions happened in
     callbackfn terminate iteration
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
-
         var accessed = false;
 
         function callbackfn(prevVal, curVal, idx, obj) {
@@ -18,17 +15,14 @@ function testcase() {
                 accessed = true;
             }
             if (idx === 10) {
-                throw new Error("Exception occurred in callbackfn");
+                throw new Test262Error("Exception occurred in callbackfn");
             }
         }
 
         var obj = { 0: 11, 4: 10, 10: 8, length: 20 };
 
-        try {
+assert.throws(Test262Error, function() {
             Array.prototype.reduceRight.call(obj, callbackfn, 1);
-            return false;
-        } catch (ex) {
-            return !accessed;
-        }
-    }
-runTestCase(testcase);
+});
+
+assert.sameValue(accessed, false, 'accessed');
diff --git a/test/built-ins/Array/prototype/some/15.4.4.17-4-10.js b/test/built-ins/Array/prototype/some/15.4.4.17-4-10.js
index 4b27b4d5c3ec1a0826f25077087385ef8c46c985..e20cbf01c7e9822e2cd5b6e36f3e8590012557d4 100644
--- a/test/built-ins/Array/prototype/some/15.4.4.17-4-10.js
+++ b/test/built-ins/Array/prototype/some/15.4.4.17-4-10.js
@@ -6,25 +6,17 @@ es5id: 15.4.4.17-4-10
 description: >
     Array.prototype.some - the exception is not thrown if exception
     was thrown by step 2
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
-
         var obj = { 0: 11, 1: 12 };
 
         Object.defineProperty(obj, "length", {
             get: function () {
-                throw new SyntaxError();
+                throw new Test262Error();
             },
             configurable: true
         });
 
-        try {
+assert.throws(Test262Error, function() {
             Array.prototype.some.call(obj, undefined);
-            return false;
-        } catch (ex) {
-            return !(ex instanceof TypeError);
-        }
-    }
-runTestCase(testcase);
+});
diff --git a/test/built-ins/Array/prototype/some/15.4.4.17-4-11.js b/test/built-ins/Array/prototype/some/15.4.4.17-4-11.js
index dd5b4e379a218e87a9f35ccedfd53db36b793ec8..2d8747ff580cbc5bbe39188f7fed59e0269e312a 100644
--- a/test/built-ins/Array/prototype/some/15.4.4.17-4-11.js
+++ b/test/built-ins/Array/prototype/some/15.4.4.17-4-11.js
@@ -6,29 +6,21 @@ es5id: 15.4.4.17-4-11
 description: >
     Array.prototype.some - the exception is not thrown if exception
     was thrown by step 3
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
-
         var obj = { 0: 11, 1: 12 };
 
         Object.defineProperty(obj, "length", {
             get: function () {
                 return {
                     toString: function () {
-                        throw new SyntaxError();
+                        throw new Test262Error();
                     }
                 };
             },
             configurable: true
         });
 
-        try {
+assert.throws(Test262Error, function() {
             Array.prototype.some.call(obj, undefined);
-            return false;
-        } catch (ex) {
-            return !(ex instanceof TypeError);
-        }
-    }
-runTestCase(testcase);
+});
diff --git a/test/built-ins/Array/prototype/some/15.4.4.17-5-1.js b/test/built-ins/Array/prototype/some/15.4.4.17-5-1.js
index 6a72406c2904b0796b09367d424324b7b2bc97bd..b33dd69f2a6ced30b833553ba69889ecd9e7bc21 100644
--- a/test/built-ins/Array/prototype/some/15.4.4.17-5-1.js
+++ b/test/built-ins/Array/prototype/some/15.4.4.17-5-1.js
@@ -5,10 +5,9 @@
 es5id: 15.4.4.17-5-1
 description: Array.prototype.some - thisArg is passed
 flags: [noStrict]
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
+(function() {
         this._15_4_4_17_5_1 = false;
         var _15_4_4_17_5_1 = true;
 
@@ -16,6 +15,6 @@ function testcase() {
             return this._15_4_4_17_5_1;
         }
         var arr = [1];
-        return !arr.some(callbackfn);
-    }
-runTestCase(testcase);
+
+assert.sameValue(arr.some(callbackfn), false, 'arr.some(callbackfn)');
+})();
diff --git a/test/built-ins/Date/prototype/toISOString/15.9.5.43-0-10.js b/test/built-ins/Date/prototype/toISOString/15.9.5.43-0-10.js
index c26fdbbe4343c1331accd9e763ffe729d694a841..bb2f0c928cbc81660b6775a75f6bfed99690a970 100644
--- a/test/built-ins/Date/prototype/toISOString/15.9.5.43-0-10.js
+++ b/test/built-ins/Date/prototype/toISOString/15.9.5.43-0-10.js
@@ -7,28 +7,21 @@ description: >
     Date.prototype.toISOString - RangeError is not 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;
 
         if (timeZoneMinutes > 0) {
             date = new Date(1970, 0, -99999999, 0, 0, 0, 1);
 
-            try {
+            assert.throws(RangeError, function() {
                 date.toISOString();
-                return false;
-            } catch (e) {
-                return e instanceof RangeError;
-            }
+            });
         } else {
             date = new Date(1970, 0, -99999999, 0, 0 + timeZoneMinutes + 60, 0, 1);
 
             dateStr = date.toISOString();
 
-            return dateStr[dateStr.length - 1] === "Z";
+            assert.sameValue(dateStr[dateStr.length - 1], "Z");
         }
-    }
-runTestCase(testcase);
diff --git a/test/built-ins/Date/prototype/toISOString/15.9.5.43-0-13.js b/test/built-ins/Date/prototype/toISOString/15.9.5.43-0-13.js
index 86882fa91b660dd7eb678e27f273f2ebde37caaa..5840e5daaaeb9c7e9d3222c353268368c204a311 100644
--- a/test/built-ins/Date/prototype/toISOString/15.9.5.43-0-13.js
+++ b/test/built-ins/Date/prototype/toISOString/15.9.5.43-0-13.js
@@ -7,24 +7,17 @@ description: >
     Date.prototype.toISOString - RangeError is thrown when value of
     date is Date(1970, 0, 100000001, 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, 100000001, 0, 0 + timeZoneMinutes + 60, 0, 1);
                 dateStr = date.toISOString();
-                return false;
             } else {
                 date = new Date(1970, 0, 100000001, 0, 0, 0, 1);
                 dateStr = date.toISOString();
-                return false;
             }
-        } catch (e) {
-            return e instanceof RangeError;
-        }
-    }
-runTestCase(testcase);
+});
diff --git a/test/built-ins/Date/prototype/toISOString/15.9.5.43-0-9.js b/test/built-ins/Date/prototype/toISOString/15.9.5.43-0-9.js
index 4b4cd380c7ecb75be97b7f9bad46d299f268ada2..966c2575d2f01b936e0c81e1db39af7668ee8786 100644
--- a/test/built-ins/Date/prototype/toISOString/15.9.5.43-0-9.js
+++ b/test/built-ins/Date/prototype/toISOString/15.9.5.43-0-9.js
@@ -7,28 +7,21 @@ description: >
     Date.prototype.toISOString - RangeError is not thrown when value
     of date is Date(1970, 0, -99999999, 0, 0, 0, 0), the time zone is
     UTC(0)
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
         var timeZoneMinutes = new Date().getTimezoneOffset() * (-1);
         var date, dateStr;
 
         if (timeZoneMinutes > 0) {
             date = new Date(1970, 0, -99999999, 0, 0, 0, 0);
 
-            try {
+            assert.throws(RangeError, function() {
                 date.toISOString();
-                return false;
-            } catch (e) {
-                return e instanceof RangeError;
-            }
+            });
         } else {
             date = new Date(1970, 0, -99999999, 0, 0 + timeZoneMinutes + 60, 0, 0);
 
             dateStr = date.toISOString();
 
-            return dateStr[dateStr.length - 1] === "Z";
+            assert.sameValue(dateStr[dateStr.length - 1], "Z");
         }
-    }
-runTestCase(testcase);
diff --git a/test/built-ins/Error/prototype/message/15.11.4.3-1.js b/test/built-ins/Error/prototype/message/15.11.4.3-1.js
index 862334e05845d723e5692f975d65f3db52151d5f..6860135a9fcc651674964c62dcb2707468825b2e 100644
--- a/test/built-ins/Error/prototype/message/15.11.4.3-1.js
+++ b/test/built-ins/Error/prototype/message/15.11.4.3-1.js
@@ -4,15 +4,8 @@
 /*---
 es5id: 15.11.4.3-1
 description: Error.prototype.message is not enumerable.
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
         for (var i in Error.prototype) {
-            if (i==="message") {
-                return false;
-            }
+            assert.notSameValue(i, "message", 'i');
         }
-        return true;
-}
-runTestCase(testcase);
diff --git a/test/built-ins/Error/prototype/name/15.11.4.2-1.js b/test/built-ins/Error/prototype/name/15.11.4.2-1.js
index f8aeabc757b1785bff90cee0f68b647fae0c7c7c..7df0656c17d4b857e0a51d446d3f10ca9fb19f82 100644
--- a/test/built-ins/Error/prototype/name/15.11.4.2-1.js
+++ b/test/built-ins/Error/prototype/name/15.11.4.2-1.js
@@ -4,15 +4,8 @@
 /*---
 es5id: 15.11.4.2-1
 description: Error.prototype.name is not enumerable.
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
         for (var i in Error.prototype) {
-            if (i==="name") {
-                return false;
-            }
+            assert.notSameValue(i, "name", 'i');
         }
-        return true;
-}
-runTestCase(testcase);
diff --git a/test/built-ins/Function/15.3.2.1-11-2-s.js b/test/built-ins/Function/15.3.2.1-11-2-s.js
index ca72758c8e7ad034b416c0d86870ee52732dce28..7f670f1477aba9c6cc61b00322ec59738f749f48 100644
--- a/test/built-ins/Function/15.3.2.1-11-2-s.js
+++ b/test/built-ins/Function/15.3.2.1-11-2-s.js
@@ -7,16 +7,6 @@ description: >
     Duplicate seperate parameter name in Function constructor called
     from strict mode allowed if body not strict
 flags: [onlyStrict]
-includes: [runTestCase.js]
 ---*/
 
-function testcase()
-{ 
-  try {
     Function('a','a','return;');
-    return true;
-  } catch (e) {
-    return false;
-  }
- }
-runTestCase(testcase);
diff --git a/test/built-ins/Function/15.3.2.1-11-4-s.js b/test/built-ins/Function/15.3.2.1-11-4-s.js
index 86cd60f4a5bf5c296e264a8b3d4ea683a04ae935..858a9d7ac9aae0fe5587051442fde2653eb3294a 100644
--- a/test/built-ins/Function/15.3.2.1-11-4-s.js
+++ b/test/built-ins/Function/15.3.2.1-11-4-s.js
@@ -8,16 +8,6 @@ description: >
     named 'eval' does not throws SyntaxError if function body is not
     strict mode
 flags: [onlyStrict]
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
-   try { 
      Function('eval', 'return;');
-	 return true;
-   } catch (e) {
-     return false;
-   }
-   
-  }
-runTestCase(testcase);
diff --git a/test/built-ins/Function/15.3.2.1-11-6-s.js b/test/built-ins/Function/15.3.2.1-11-6-s.js
index d5bb334607dbc6793e964d38a89fc8c56a959572..5d5362cbb8716567c06679a89a56a9615b570b0f 100644
--- a/test/built-ins/Function/15.3.2.1-11-6-s.js
+++ b/test/built-ins/Function/15.3.2.1-11-6-s.js
@@ -7,17 +7,6 @@ description: >
     Duplicate combined parameter name allowed in Function constructor
     called in strict mode if body not strict
 flags: [onlyStrict]
-includes: [runTestCase.js]
 ---*/
 
-function testcase()
-{ 
-  try {
      Function('a,a','return a;');
-	 return true;
-  } catch (e) {
-     return false;
-  }
-  
- }
-runTestCase(testcase);
diff --git a/test/built-ins/Function/15.3.2.1-11-7-s.js b/test/built-ins/Function/15.3.2.1-11-7-s.js
index 22b70f0f6eef132865413f942563b8748291eb67..dd1d6e55ada7e1420e7f1cddfb12370d4ea7b9c3 100644
--- a/test/built-ins/Function/15.3.2.1-11-7-s.js
+++ b/test/built-ins/Function/15.3.2.1-11-7-s.js
@@ -8,16 +8,6 @@ description: >
     named arguments does not throws SyntaxError if function body is
     not strict mode
 flags: [onlyStrict]
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
-   try {
      Function('arguments', 'return;');
-     return true;
-	 
-   } catch (e) {
-     return false;
-   }
-  }
-runTestCase(testcase);
diff --git a/test/built-ins/Function/prototype/bind/15.3.4.5-2-16.js b/test/built-ins/Function/prototype/bind/15.3.4.5-2-16.js
index 198888297bc225d17e7e4ca763af3e459ad5e084..4d72a31fe12024715fec23ac3de57e4740ba7c15 100644
--- a/test/built-ins/Function/prototype/bind/15.3.4.5-2-16.js
+++ b/test/built-ins/Function/prototype/bind/15.3.4.5-2-16.js
@@ -4,16 +4,8 @@
 /*---
 es5id: 15.3.4.5-2-16
 description: Function.prototype.bind - 'Target' is a function
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
         function testFunc() {}
-        try {
+
             testFunc.bind();
-            return true;
-        } catch (e) {
-            return false;
-        }
-    }
-runTestCase(testcase);
diff --git a/test/built-ins/Function/prototype/bind/15.3.4.5-20-2.js b/test/built-ins/Function/prototype/bind/15.3.4.5-20-2.js
index 0504fb6ce17b1f18f067025c2e4eea834c5464fd..c07b78a052f28015d44f7ac31b9b5748f345c8f6 100644
--- a/test/built-ins/Function/prototype/bind/15.3.4.5-20-2.js
+++ b/test/built-ins/Function/prototype/bind/15.3.4.5-20-2.js
@@ -6,17 +6,11 @@ es5id: 15.3.4.5-20-2
 description: >
     Function.prototype.bind - [[Get]] attribute of 'caller' property
     in 'F' is thrower
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
-
         function foo() { }
         var obj = foo.bind({});
-        try {
-            return obj.caller && false;
-        } catch (ex) {
-            return (ex instanceof TypeError);
-        }
-    }
-runTestCase(testcase);
+
+assert.throws(TypeError, function() {
+    obj.caller;
+});
diff --git a/test/built-ins/Function/prototype/bind/15.3.4.5-21-2.js b/test/built-ins/Function/prototype/bind/15.3.4.5-21-2.js
index 376124ecb4dfa899800e738073f5eb11e1e0ced8..8779bc06da6d96bb21ff078c74c288af2640b07d 100644
--- a/test/built-ins/Function/prototype/bind/15.3.4.5-21-2.js
+++ b/test/built-ins/Function/prototype/bind/15.3.4.5-21-2.js
@@ -6,17 +6,11 @@ es5id: 15.3.4.5-21-2
 description: >
     Function.prototype.bind - [[Get]] attribute of 'arguments'
     property in  'F' is thrower
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
-
         function foo() { }
         var obj = foo.bind({});
-        try {
-            return obj.arguments && false;
-        } catch (ex) {
-            return (ex instanceof TypeError);
-        }
-    }
-runTestCase(testcase);
+
+assert.throws(TypeError, function() {
+    obj.arguments;
+});
diff --git a/test/built-ins/JSON/parse/15.12.1.1-0-1.js b/test/built-ins/JSON/parse/15.12.1.1-0-1.js
index 003fcf02fa8ad4d4ef94acda860663d4d130d80a..d1bb9eecd009cec9bed0a79919af32b35da397e1 100644
--- a/test/built-ins/JSON/parse/15.12.1.1-0-1.js
+++ b/test/built-ins/JSON/parse/15.12.1.1-0-1.js
@@ -4,16 +4,8 @@
 /*---
 es5id: 15.12.1.1-0-1
 description: The JSON lexical grammar treats whitespace as a token seperator
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
-  
-  try {
+assert.throws(SyntaxError, function() {
     JSON.parse('12\t\r\n 34'); // should produce a syntax error as whitespace results in two tokens
-    }
-  catch (e) {
-      if (e.name === 'SyntaxError') return true;
-      }
-  }
-runTestCase(testcase);
+});
diff --git a/test/built-ins/JSON/parse/15.12.1.1-0-2.js b/test/built-ins/JSON/parse/15.12.1.1-0-2.js
index 76e5cd17992802e51052bfa8c290931f15574718..8254a4d62ab48f31568314e4999ad5afe879e7e3 100644
--- a/test/built-ins/JSON/parse/15.12.1.1-0-2.js
+++ b/test/built-ins/JSON/parse/15.12.1.1-0-2.js
@@ -6,16 +6,8 @@ es5id: 15.12.1.1-0-2
 description: >
     <VT> is not valid JSON whitespace as specified by the production
     JSONWhitespace.
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
-  
-  try {
+assert.throws(SyntaxError, function() {
     JSON.parse('\u000b1234'); // should produce a syntax error 
-    }
-  catch (e) {
-      return true; // treat any exception as a pass, other tests ensure that JSON.parse throws SyntaxError exceptions
-      }
-  }
-runTestCase(testcase);
+});
diff --git a/test/built-ins/JSON/parse/15.12.1.1-0-3.js b/test/built-ins/JSON/parse/15.12.1.1-0-3.js
index 38c7b69470ca461b1a0b0ad51e1a6c62634bd100..fb213cb00dd33cd1d9b19a57bafb1d332ee02310 100644
--- a/test/built-ins/JSON/parse/15.12.1.1-0-3.js
+++ b/test/built-ins/JSON/parse/15.12.1.1-0-3.js
@@ -6,16 +6,8 @@ es5id: 15.12.1.1-0-3
 description: >
     <FF> is not valid JSON whitespace as specified by the production
     JSONWhitespace.
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
-  
-  try {
+assert.throws(SyntaxError, function() {
     JSON.parse('\u000c1234'); // should produce a syntax error 
-    }
-  catch (e) {
-      return true; // treat any exception as a pass, other tests ensure that JSON.parse throws SyntaxError exceptions
-      }
-  }
-runTestCase(testcase);
+});
diff --git a/test/built-ins/JSON/parse/15.12.1.1-0-4.js b/test/built-ins/JSON/parse/15.12.1.1-0-4.js
index 6a7d75a2136d89497dfde15963e85f3a09957bd6..34b31816c972f445d745aead541eb9105d115905 100644
--- a/test/built-ins/JSON/parse/15.12.1.1-0-4.js
+++ b/test/built-ins/JSON/parse/15.12.1.1-0-4.js
@@ -6,16 +6,8 @@ es5id: 15.12.1.1-0-4
 description: >
     <NBSP> is not valid JSON whitespace as specified by the production
     JSONWhitespace.
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
-  
-  try {
+assert.throws(SyntaxError, function() {
     JSON.parse('\u00a01234'); // should produce a syntax error 
-    }
-  catch (e) {
-      return true; // treat any exception as a pass, other tests ensure that JSON.parse throws SyntaxError exceptions
-      }
-  }
-runTestCase(testcase);
+});
diff --git a/test/built-ins/JSON/parse/15.12.1.1-0-5.js b/test/built-ins/JSON/parse/15.12.1.1-0-5.js
index 0655622a1c094e4d9f374badb76bbb5d939b5652..e18222fd23f7bc085a00f0b9b9e0e932c9db6012 100644
--- a/test/built-ins/JSON/parse/15.12.1.1-0-5.js
+++ b/test/built-ins/JSON/parse/15.12.1.1-0-5.js
@@ -6,16 +6,8 @@ es5id: 15.12.1.1-0-5
 description: >
     <ZWSPP> is not valid JSON whitespace as specified by the
     production JSONWhitespace.
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
-  
-  try {
+assert.throws(SyntaxError, function() {
     JSON.parse('\u200b1234'); // should produce a syntax error 
-    }
-  catch (e) {
-      return true; // treat any exception as a pass, other tests ensure that JSON.parse throws SyntaxError exceptions
-      }
-  }
-runTestCase(testcase);
+});
diff --git a/test/built-ins/JSON/parse/15.12.1.1-0-6.js b/test/built-ins/JSON/parse/15.12.1.1-0-6.js
index eb0a10a9503024a8823bd028423257c04d09e670..cfaf7d0505511c3571941ca95216451e97e84cb0 100644
--- a/test/built-ins/JSON/parse/15.12.1.1-0-6.js
+++ b/test/built-ins/JSON/parse/15.12.1.1-0-6.js
@@ -6,16 +6,8 @@ es5id: 15.12.1.1-0-6
 description: >
     <BOM> is not valid JSON whitespace as specified by the production
     JSONWhitespace.
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
-  
-  try {
+assert.throws(SyntaxError, function() {
     JSON.parse('\ufeff1234'); // should produce a syntax error a
-    }
-  catch (e) {
-      return true; // treat any exception as a pass, other tests ensure that JSON.parse throws SyntaxError exceptions
-      }
-  }
-runTestCase(testcase);
+});
diff --git a/test/built-ins/JSON/parse/15.12.1.1-0-7.js b/test/built-ins/JSON/parse/15.12.1.1-0-7.js
index 25aee06eb80fed2863e20b68294e7cb52006ee20..25e408786bf98e020c05ba41b8f34ec0eedeb69d 100644
--- a/test/built-ins/JSON/parse/15.12.1.1-0-7.js
+++ b/test/built-ins/JSON/parse/15.12.1.1-0-7.js
@@ -6,17 +6,9 @@ es5id: 15.12.1.1-0-7
 description: >
     other category z spaces are not valid JSON whitespace as specified
     by the production JSONWhitespace.
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
-  
-  try {
+assert.throws(SyntaxError, function() {
     // the following should produce a syntax error 
     JSON.parse('\u1680\u180e\u2000\u2001\u2002\u2003\u2004\u2005\u2006\u2007\u2008\u2009\u200a\u202f\u205f\u30001234'); 
-    }
-  catch (e) {
-      return true; // treat any exception as a pass, other tests ensure that JSON.parse throws SyntaxError exceptions
-     }
-  }
-runTestCase(testcase);
+});
diff --git a/test/built-ins/JSON/parse/15.12.1.1-0-8.js b/test/built-ins/JSON/parse/15.12.1.1-0-8.js
index 6b1d7360f6a2d8d29779b65eca434d6681bdf93b..fa7bb87b3d9a46c8392917af5e55c2f64e6d5ce8 100644
--- a/test/built-ins/JSON/parse/15.12.1.1-0-8.js
+++ b/test/built-ins/JSON/parse/15.12.1.1-0-8.js
@@ -6,16 +6,8 @@ es5id: 15.12.1.1-0-8
 description: >
     U+2028 and U+2029 are not valid JSON whitespace as specified by
     the production JSONWhitespace.
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
-  
-  try {
+assert.throws(SyntaxError, function() {
     JSON.parse('\u2028\u20291234'); // should produce a syntax error 
-    }
-  catch (e) {
-      return true; // treat any exception as a pass, other tests ensure that JSON.parse throws SyntaxError exceptions
-      }
-  }
-runTestCase(testcase);
+});
diff --git a/test/built-ins/JSON/parse/15.12.1.1-g1-1.js b/test/built-ins/JSON/parse/15.12.1.1-g1-1.js
index 9cc442b585387f75b1611b99cbb0fe00f4603741..4325a2899d5bac412949d71c5ad5a1294a15ea81 100644
--- a/test/built-ins/JSON/parse/15.12.1.1-g1-1.js
+++ b/test/built-ins/JSON/parse/15.12.1.1-g1-1.js
@@ -4,16 +4,10 @@
 /*---
 es5id: 15.12.1.1-g1-1
 description: The JSON lexical grammar treats <TAB> as a whitespace character
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
-  if (JSON.parse('\t1234')!==1234) return false; // <TAB> should be ignored
-  try {
-    JSON.parse('12\t34'); // <TAB> should produce a syntax error as whitespace results in two tokens
-    }
-  catch (e) {
-      return true; // treat any exception as a pass, other tests ensure that JSON.parse throws SyntaxError exceptions
-      }
-  }
-runTestCase(testcase);
+assert.sameValue(JSON.parse('\t1234'), 1234, '<TAB> should be ignored');
+
+assert.throws(SyntaxError, function() {
+    JSON.parse('12\t34');
+}, '<TAB> should produce a syntax error as whitespace results in two tokens');
diff --git a/test/built-ins/JSON/parse/15.12.1.1-g1-2.js b/test/built-ins/JSON/parse/15.12.1.1-g1-2.js
index aa1f04d21f7a79b7d7cf08eff470d3aa49ece5c6..4c71c01a765d1a34575daa4a888bfc2fc12c45c6 100644
--- a/test/built-ins/JSON/parse/15.12.1.1-g1-2.js
+++ b/test/built-ins/JSON/parse/15.12.1.1-g1-2.js
@@ -4,16 +4,10 @@
 /*---
 es5id: 15.12.1.1-g1-2
 description: The JSON lexical grammar treats <CR> as a whitespace character
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
-  if (JSON.parse('\r1234')!==1234) return false; // <cr> should be ignored
-  try {
-    JSON.parse('12\r34'); // <CR> should produce a syntax error as whitespace results in two tokens
-    }
-  catch (e) {
-      if (e.name === 'SyntaxError') return true;
-      }
-  }
-runTestCase(testcase);
+assert.sameValue(JSON.parse('\r1234'), 1234, '<cr> should be ignored');
+
+assert.throws(SyntaxError, function() {
+    JSON.parse('12\r34');
+}, '<CR> should produce a syntax error as whitespace results in two tokens');
diff --git a/test/built-ins/JSON/parse/15.12.1.1-g1-3.js b/test/built-ins/JSON/parse/15.12.1.1-g1-3.js
index 8e30dac0aec8ebd768a8285b628738e88fc1534f..80e533c416537fd0ad3d5c0b880c48a659b73ba5 100644
--- a/test/built-ins/JSON/parse/15.12.1.1-g1-3.js
+++ b/test/built-ins/JSON/parse/15.12.1.1-g1-3.js
@@ -4,16 +4,10 @@
 /*---
 es5id: 15.12.1.1-g1-3
 description: The JSON lexical grammar treats <LF> as a whitespace character
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
-  if (JSON.parse('\n1234')!==1234) return false; // <LF> should be ignored
-  try {
-    JSON.parse('12\n34'); // <LF> should produce a syntax error as whitespace results in two tokens
-    }
-  catch (e) {
-      if (e.name === 'SyntaxError') return true;
-      }
-  }
-runTestCase(testcase);
+assert.sameValue(JSON.parse('\n1234'), 1234, '<LF> should be ignored');
+
+assert.throws(SyntaxError, function() {
+    JSON.parse('12\n34');
+}, '<LF> should produce a syntax error as whitespace results in two tokens');
diff --git a/test/built-ins/JSON/parse/15.12.1.1-g1-4.js b/test/built-ins/JSON/parse/15.12.1.1-g1-4.js
index 3b1494c0ec327ef843dd6231c443a6430b8b1042..b00e82b558d73004ee0a146fc949887a64272d99 100644
--- a/test/built-ins/JSON/parse/15.12.1.1-g1-4.js
+++ b/test/built-ins/JSON/parse/15.12.1.1-g1-4.js
@@ -4,16 +4,10 @@
 /*---
 es5id: 15.12.1.1-g1-4
 description: The JSON lexical grammar treats <SP> as a whitespace character
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
- if (JSON.parse(' 1234')!=1234) return false; // <SP> should be ignored
-  try {
-    JSON.parse('12 34'); // <SP> should produce a syntax error as whitespace results in two tokens
-    }
-  catch (e) {
-      if (e.name === 'SyntaxError') return true;
-      }
-  }
-runTestCase(testcase);
+assert.sameValue(JSON.parse(' 1234'), 1234, '<SP> should be ignored');
+
+assert.throws(SyntaxError, function() {
+    JSON.parse('12 34');
+}, '<SP> should produce a syntax error as whitespace results in two tokens');
diff --git a/test/built-ins/JSON/parse/15.12.1.1-g2-2.js b/test/built-ins/JSON/parse/15.12.1.1-g2-2.js
index 4e5be737a5b190582cd084a55f76744176f32b66..dcef87ac525e44123f49ceb4c5fc6f73515bd2f9 100644
--- a/test/built-ins/JSON/parse/15.12.1.1-g2-2.js
+++ b/test/built-ins/JSON/parse/15.12.1.1-g2-2.js
@@ -4,15 +4,8 @@
 /*---
 es5id: 15.12.1.1-g2-2
 description: A JSONString may not be delimited by single quotes
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
-    try {
-        if (JSON.parse("'abc'") ==='abc') return false;
-       }
-     catch (e) {
-        return true;
-        }
-  }
-runTestCase(testcase);
+assert.throws(SyntaxError, function() {
+  JSON.parse("'abc'");
+});
diff --git a/test/built-ins/JSON/parse/15.12.1.1-g2-3.js b/test/built-ins/JSON/parse/15.12.1.1-g2-3.js
index 93c6de5a3f3a22395771f78bc51a3698e2cbe9c2..4809d42250ac4710f1946b6c506afd5938cf440a 100644
--- a/test/built-ins/JSON/parse/15.12.1.1-g2-3.js
+++ b/test/built-ins/JSON/parse/15.12.1.1-g2-3.js
@@ -4,15 +4,8 @@
 /*---
 es5id: 15.12.1.1-g2-3
 description: A JSONString may not be delimited by Uncode escaped quotes
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
-    try {
-        if (JSON.parse("\\u0022abc\\u0022") ==='abc') return false;
-       }
-     catch (e) {
-        return true;
-        }
-  }
-runTestCase(testcase);
+assert.throws(SyntaxError, function() {
+  JSON.parse("\\u0022abc\\u0022");
+});
diff --git a/test/built-ins/JSON/parse/15.12.1.1-g2-4.js b/test/built-ins/JSON/parse/15.12.1.1-g2-4.js
index 54492523d190a2f8e44abe90c6bc19f995e064f6..cf4a5d47f17fefdf85a811eeaa8dadfd0a9b89b6 100644
--- a/test/built-ins/JSON/parse/15.12.1.1-g2-4.js
+++ b/test/built-ins/JSON/parse/15.12.1.1-g2-4.js
@@ -4,15 +4,8 @@
 /*---
 es5id: 15.12.1.1-g2-4
 description: A JSONString must both begin and end with double quotes
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
-    try {
-        if (JSON.parse('"ab'+"c'") ==='abc') return false;
-       }
-     catch (e) {
-        return true;
-        }
-  }
-runTestCase(testcase);
+assert.throws(SyntaxError, function() {
+  JSON.parse('"ab'+"c'");
+});
diff --git a/test/built-ins/JSON/parse/15.12.1.1-g4-1.js b/test/built-ins/JSON/parse/15.12.1.1-g4-1.js
index 2bcfc01e81ffbf73957b7609f8f773caf0dfb73d..d7b8a458485ef6b279360a875ac88201ca679f51 100644
--- a/test/built-ins/JSON/parse/15.12.1.1-g4-1.js
+++ b/test/built-ins/JSON/parse/15.12.1.1-g4-1.js
@@ -6,15 +6,8 @@ es5id: 15.12.1.1-g4-1
 description: >
     The JSON lexical grammar does not allow a JSONStringCharacter to
     be any of the Unicode characters U+0000 thru U+0007
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
-  try {
+assert.throws(SyntaxError, function() {
     JSON.parse('"\u0000\u0001\u0002\u0003\u0004\u0005\u0006\u0007"'); // invalid string characters should produce a syntax error
-    }
-  catch (e) {
-      return true; // treat any exception as a pass, other tests ensure that JSON.parse throws SyntaxError exceptions
-      }
-  }
-runTestCase(testcase);
+});
diff --git a/test/built-ins/JSON/parse/15.12.1.1-g4-2.js b/test/built-ins/JSON/parse/15.12.1.1-g4-2.js
index 44ae7812ff76c43e121ae22dcabf3c02468a864e..5022dcbca34e5c4b251b2a68c1fe4a08bc514a4b 100644
--- a/test/built-ins/JSON/parse/15.12.1.1-g4-2.js
+++ b/test/built-ins/JSON/parse/15.12.1.1-g4-2.js
@@ -6,15 +6,8 @@ es5id: 15.12.1.1-g4-2
 description: >
     The JSON lexical grammar does not allow a JSONStringCharacter to
     be any of the Unicode characters U+0008 thru U+000F
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
-  try {
+assert.throws(SyntaxError, function() {
     JSON.parse('"\u0008\u0009\u000a\u000b\u000c\u000d\u000e\u000f"'); // invalid string characters should produce a syntax error
-    }
-  catch (e) {
-      return true; // treat any exception as a pass, other tests ensure that JSON.parse throws SyntaxError exceptions
-      }
-  }
-runTestCase(testcase);
+});
diff --git a/test/built-ins/JSON/parse/15.12.1.1-g4-3.js b/test/built-ins/JSON/parse/15.12.1.1-g4-3.js
index fa298dce2bf4202cf906967aa738d1df9a5037d0..9d13dbb696e3221801024de9daaf428822f0beb0 100644
--- a/test/built-ins/JSON/parse/15.12.1.1-g4-3.js
+++ b/test/built-ins/JSON/parse/15.12.1.1-g4-3.js
@@ -6,15 +6,8 @@ es5id: 15.12.1.1-g4-3
 description: >
     The JSON lexical grammar does not allow a JSONStringCharacter to
     be any of the Unicode characters U+0010 thru U+0017
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
-  try {
+assert.throws(SyntaxError, function() {
     JSON.parse('"\u0010\u0011\u0012\u0013\u0014\u0015\u0016\u0017"'); // invalid string characters should produce a syntax error
-    }
-  catch (e) {
-      return true; // treat any exception as a pass, other tests ensure that JSON.parse throws SyntaxError exceptions
-      }
-  }
-runTestCase(testcase);
+});
diff --git a/test/built-ins/JSON/parse/15.12.1.1-g4-4.js b/test/built-ins/JSON/parse/15.12.1.1-g4-4.js
index 0370960f473aadc44b5a9d051a93820ba4fbfa6e..e222184eb6e44dd36747c1e8a726446466b4732f 100644
--- a/test/built-ins/JSON/parse/15.12.1.1-g4-4.js
+++ b/test/built-ins/JSON/parse/15.12.1.1-g4-4.js
@@ -6,15 +6,8 @@ es5id: 15.12.1.1-g4-4
 description: >
     The JSON lexical grammar does not allow a JSONStringCharacter to
     be any of the Unicode characters U+0018 thru U+001F
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
-  try {
+assert.throws(SyntaxError, function() {
     JSON.parse('"\u0018\u0019\u001a\u001b\u001c\u001d\u001e\u001f"'); // invalid string characters should produce a syntax error
-    }
-  catch (e) {
-      if (e.name === 'SyntaxError') return true;
-      }
-  }
-runTestCase(testcase);
+});
diff --git a/test/built-ins/JSON/parse/15.12.1.1-g5-2.js b/test/built-ins/JSON/parse/15.12.1.1-g5-2.js
index 8d0a1c053304ad4314c28ad3a13362cea0bf1669..d03a299208e6254fa9b207a207b721ab24566594 100644
--- a/test/built-ins/JSON/parse/15.12.1.1-g5-2.js
+++ b/test/built-ins/JSON/parse/15.12.1.1-g5-2.js
@@ -6,15 +6,8 @@ es5id: 15.12.1.1-g5-2
 description: >
     A JSONStringCharacter UnicodeEscape may not have fewer than 4 hex
     characters
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
-    try {
+assert.throws(SyntaxError, function() {
         JSON.parse('"\\u005"') 
-       }
-     catch (e) {
-        return e.name==='SyntaxError'
-        }
-  }
-runTestCase(testcase);
+});
diff --git a/test/built-ins/JSON/parse/15.12.1.1-g5-3.js b/test/built-ins/JSON/parse/15.12.1.1-g5-3.js
index 7ed0b8e894a7b3303795c8575e22fdec31909e2b..e577bd6f6090264c5bf833a7ef88753a750879b1 100644
--- a/test/built-ins/JSON/parse/15.12.1.1-g5-3.js
+++ b/test/built-ins/JSON/parse/15.12.1.1-g5-3.js
@@ -6,15 +6,8 @@ es5id: 15.12.1.1-g5-3
 description: >
     A JSONStringCharacter UnicodeEscape may not include any non=hex
     characters
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
-    try {
+assert.throws(SyntaxError, function() {
         JSON.parse('"\\u0X50"') 
-       }
-     catch (e) {
-        return e.name==='SyntaxError'
-        }
-  }
-runTestCase(testcase);
+});
diff --git a/test/built-ins/JSON/parse/15.12.2-2-1.js b/test/built-ins/JSON/parse/15.12.2-2-1.js
index c2b3a57317dd6b47f8d8e0d5b8a944adc969437b..a2a42946f188a68f547716eb8621bef7520fc44b 100644
--- a/test/built-ins/JSON/parse/15.12.2-2-1.js
+++ b/test/built-ins/JSON/parse/15.12.2-2-1.js
@@ -6,13 +6,8 @@ es5id: 15.12.2-2-1
 description: >
     JSON.parse - parsing an object where property name is a null
     character
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
-
-        var result = true;
-
         var nullChars = new Array();
         nullChars[0] = '\"\u0000\"';
         nullChars[1] = '\"\u0001\"';
@@ -48,13 +43,7 @@ function testcase() {
         nullChars[31] = '\"\u001F\"';
 
         for (var index in nullChars) {
-            try {
+            assert.throws(SyntaxError, function() {
                 var obj = JSON.parse('{ ' + nullChars[index] + ' : "John" } ');
-                result = (result && false);
-            } catch (e) {
-                result = (result && (e instanceof SyntaxError));
-            }
+            });
         }
-        return result;
-    }
-runTestCase(testcase);
diff --git a/test/built-ins/JSON/parse/15.12.2-2-10.js b/test/built-ins/JSON/parse/15.12.2-2-10.js
index ef0291f48e7875a5eb762e4ce006f0833cb32a0f..0f3c73ac110b001832f67106c4a06eebaa8d9f11 100644
--- a/test/built-ins/JSON/parse/15.12.2-2-10.js
+++ b/test/built-ins/JSON/parse/15.12.2-2-10.js
@@ -6,13 +6,8 @@ es5id: 15.12.2-2-10
 description: >
     JSON.parse - parsing an object where property value middles with a
     null character
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
-
-        var result = true;
-
         var nullChars = new Array();
         nullChars[0] = '\"\u0000\"';
         nullChars[1] = '\"\u0001\"';
@@ -48,13 +43,7 @@ function testcase() {
         nullChars[31] = '\"\u001F\"';
 
         for (var index in nullChars) {
-            try {
+            assert.throws(SyntaxError, function() {
                 var obj = JSON.parse('{ "name" : ' + "Jo" + nullChars[index] + "hn" + ' } ');
-                result = (result && false);
-            } catch (e) {
-                result = (result && (e instanceof SyntaxError));
-            }
+            });
         }
-        return result;
-    }
-runTestCase(testcase);
diff --git a/test/built-ins/JSON/parse/15.12.2-2-2.js b/test/built-ins/JSON/parse/15.12.2-2-2.js
index 9be1f9711a371fe3755177cc797d1b74afb5edb4..d577d5b76b1de1a041984b2d3dada7272cd61d49 100644
--- a/test/built-ins/JSON/parse/15.12.2-2-2.js
+++ b/test/built-ins/JSON/parse/15.12.2-2-2.js
@@ -6,13 +6,8 @@ es5id: 15.12.2-2-2
 description: >
     JSON.parse - parsing an object where property name starts with a
     null character
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
-
-        var result = true;
-
         var nullChars = new Array();
         nullChars[0] = '\"\u0000\"';
         nullChars[1] = '\"\u0001\"';
@@ -48,13 +43,7 @@ function testcase() {
         nullChars[31] = '\"\u001F\"';
 
         for (var index in nullChars) {
-            try {
+            assert.throws(SyntaxError, function() {
                 var obj = JSON.parse('{ ' + nullChars[index] + "name" + ' : "John" } ');
-                result = (result && false);
-            } catch (e) {
-                result = (result && (e instanceof SyntaxError));
-            }
+            });
         }
-        return result;
-    }
-runTestCase(testcase);
diff --git a/test/built-ins/JSON/parse/15.12.2-2-3.js b/test/built-ins/JSON/parse/15.12.2-2-3.js
index 524b8badd196ef36e6c976f2bbffaee7000c49e8..20f19e1b2ce14388f3beedcdff61ef9c05d90fcb 100644
--- a/test/built-ins/JSON/parse/15.12.2-2-3.js
+++ b/test/built-ins/JSON/parse/15.12.2-2-3.js
@@ -6,13 +6,8 @@ es5id: 15.12.2-2-3
 description: >
     JSON.parse - parsing an object where property name ends with a
     null character
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
-
-        var result = true;
-
         var nullChars = new Array();
         nullChars[0] = '\"\u0000\"';
         nullChars[1] = '\"\u0001\"';
@@ -48,13 +43,7 @@ function testcase() {
         nullChars[31] = '\"\u001F\"';
 
         for (var index in nullChars) {
-            try {
+            assert.throws(SyntaxError, function() {
                 var obj = JSON.parse('{' + "name" + nullChars[index] + ' : "John" } ');
-                result = (result && false);
-            } catch (e) {
-                result = (result && (e instanceof SyntaxError));
-            }
+            });
         }
-        return result;
-    }
-runTestCase(testcase);
diff --git a/test/built-ins/JSON/parse/15.12.2-2-4.js b/test/built-ins/JSON/parse/15.12.2-2-4.js
index dc1d6654e3d18436a515a56a5554b793940725a2..755f4578f853369418ba867262f2b2f160906162 100644
--- a/test/built-ins/JSON/parse/15.12.2-2-4.js
+++ b/test/built-ins/JSON/parse/15.12.2-2-4.js
@@ -6,13 +6,8 @@ es5id: 15.12.2-2-4
 description: >
     JSON.parse - parsing an object where property name starts and ends
     with a null character
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
-
-        var result = true;
-
         var nullChars = new Array();
         nullChars[0] = '\"\u0000\"';
         nullChars[1] = '\"\u0001\"';
@@ -48,13 +43,7 @@ function testcase() {
         nullChars[31] = '\"\u001F\"';
 
         for (var index in nullChars) {
-            try {
+            assert.throws(SyntaxError, function() {
                 var obj = JSON.parse('{' + nullChars[index] + "name" + nullChars[index] + ' : "John" } ');
-                result = (result && false);
-            } catch (e) {
-                result = (result && (e instanceof SyntaxError));
-            }
+            });
         }
-        return result;
-    }
-runTestCase(testcase);
diff --git a/test/built-ins/JSON/parse/15.12.2-2-5.js b/test/built-ins/JSON/parse/15.12.2-2-5.js
index f2149cbd813ecd31fb43e64150bc5d822532ba8b..1b0a6240bb70bc5f1138ecda05b01bec1dcf48d3 100644
--- a/test/built-ins/JSON/parse/15.12.2-2-5.js
+++ b/test/built-ins/JSON/parse/15.12.2-2-5.js
@@ -6,13 +6,8 @@ es5id: 15.12.2-2-5
 description: >
     JSON.parse - parsing an object where property name middles with a
     null character
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
-
-        var result = true;
-
         var nullChars = new Array();
         nullChars[0] = '\"\u0000\"';
         nullChars[1] = '\"\u0001\"';
@@ -48,13 +43,7 @@ function testcase() {
         nullChars[31] = '\"\u001F\"';
 
         for (var index in nullChars) {
-            try {
+            assert.throws(SyntaxError, function() {
                 var obj = JSON.parse('{ ' + "na" + nullChars[index] + "me" + ' : "John" } ');
-                result = (result && false);
-            } catch (e) {
-                result = (result && (e instanceof SyntaxError));
-            }
+            });
         }
-        return result;
-    }
-runTestCase(testcase);
diff --git a/test/built-ins/JSON/parse/15.12.2-2-6.js b/test/built-ins/JSON/parse/15.12.2-2-6.js
index dd2e2e7a0bb4f80fa9863b15a091ca71e5dd66ba..c4fb8b863c5d00f654a5a728df5fdff034f7eea6 100644
--- a/test/built-ins/JSON/parse/15.12.2-2-6.js
+++ b/test/built-ins/JSON/parse/15.12.2-2-6.js
@@ -6,13 +6,8 @@ es5id: 15.12.2-2-6
 description: >
     JSON.parse - parsing an object where property value is a null
     character
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
-
-        var result = true;
-
         var nullChars = new Array();
         nullChars[0] = '\"\u0000\"';
         nullChars[1] = '\"\u0001\"';
@@ -48,13 +43,7 @@ function testcase() {
         nullChars[31] = '\"\u001F\"';
 
         for (var index in nullChars) {
-            try {
+            assert.throws(SyntaxError, function() {
                 var obj = JSON.parse('{ "name" : ' + nullChars[index] + ' } ');
-                result = (result && false);
-            } catch (e) {
-                result = (result && (e instanceof SyntaxError));
-            }
+            });
         }
-        return result;
-    }
-runTestCase(testcase);
diff --git a/test/built-ins/JSON/parse/15.12.2-2-7.js b/test/built-ins/JSON/parse/15.12.2-2-7.js
index 6612ec01620b45802bd85973de6e16e2124e0020..2cb912b1fa6448b0fa93082aa79c55380559b272 100644
--- a/test/built-ins/JSON/parse/15.12.2-2-7.js
+++ b/test/built-ins/JSON/parse/15.12.2-2-7.js
@@ -6,13 +6,8 @@ es5id: 15.12.2-2-7
 description: >
     JSON.parse - parsing an object where property value starts with a
     null character
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
-
-        var result = true;
-
         var nullChars = new Array();
         nullChars[0] = '\"\u0000\"';
         nullChars[1] = '\"\u0001\"';
@@ -48,13 +43,7 @@ function testcase() {
         nullChars[31] = '\"\u001F\"';
 
         for (var index in nullChars) {
-            try {
+            assert.throws(SyntaxError, function() {
                 var obj = JSON.parse('{ "name" : ' + nullChars[index] + "John" + ' } ');
-                result = (result && false);
-            } catch (e) {
-                result = (result && (e instanceof SyntaxError));
-            }
+            });
         }
-        return result;
-    }
-runTestCase(testcase);
diff --git a/test/built-ins/JSON/parse/15.12.2-2-8.js b/test/built-ins/JSON/parse/15.12.2-2-8.js
index 2d4feb42c8a9f769a36d166d07e7e44af69d1b73..ab571c59f09998ac8863ed2a4417612690f04843 100644
--- a/test/built-ins/JSON/parse/15.12.2-2-8.js
+++ b/test/built-ins/JSON/parse/15.12.2-2-8.js
@@ -6,13 +6,8 @@ es5id: 15.12.2-2-8
 description: >
     JSON.parse - parsing an object where property value ends with a
     null character
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
-
-        var result = true;
-
         var nullChars = new Array();
         nullChars[0] = '\"\u0000\"';
         nullChars[1] = '\"\u0001\"';
@@ -48,13 +43,7 @@ function testcase() {
         nullChars[31] = '\"\u001F\"';
 
         for (var index in nullChars) {
-            try {
+            assert.throws(SyntaxError, function() {
                 var obj = JSON.parse('{ "name" : ' + "John" + nullChars[index] + ' } ');
-                result = (result && false);
-            } catch (e) {
-                result = (result && (e instanceof SyntaxError));
-            }
+            });
         }
-        return result;
-    }
-runTestCase(testcase);
diff --git a/test/built-ins/JSON/parse/15.12.2-2-9.js b/test/built-ins/JSON/parse/15.12.2-2-9.js
index cbd697bf64d34b722dd6c9be2556cffa6b5efbb3..ab7ca39ccdce0666d34b7e867b3c2d40ff22f617 100644
--- a/test/built-ins/JSON/parse/15.12.2-2-9.js
+++ b/test/built-ins/JSON/parse/15.12.2-2-9.js
@@ -6,13 +6,8 @@ es5id: 15.12.2-2-9
 description: >
     JSON.parse - parsing an object where property value starts and
     ends with a null character
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
-
-        var result = true;
-
         var nullChars = new Array();
         nullChars[0] = '\"\u0000\"';
         nullChars[1] = '\"\u0001\"';
@@ -48,13 +43,7 @@ function testcase() {
         nullChars[31] = '\"\u001F\"';
 
         for (var index in nullChars) {
-            try {
+            assert.throws(SyntaxError, function() {
                 var obj = JSON.parse('{ "name" : ' + nullChars[index] + "John" + nullChars[index] + ' } ');
-                result = (result && false);
-            } catch (e) {
-                result = (result && (e instanceof SyntaxError));
-            }
+            });
         }
-        return result;
-    }
-runTestCase(testcase);
diff --git a/test/built-ins/JSON/stringify/15.12.3-6-b-1.js b/test/built-ins/JSON/stringify/15.12.3-6-b-1.js
index d6d96ff336c9f8939a4b0175b08395a74e86ec55..d5eea1024f4028984b22bdf91547a020c0058afd 100644
--- a/test/built-ins/JSON/stringify/15.12.3-6-b-1.js
+++ b/test/built-ins/JSON/stringify/15.12.3-6-b-1.js
@@ -5,12 +5,10 @@
 es5id: 15.12.3-6-b-1
 description: >
     JSON.stringify treats numeric space arguments less than 1
-    (0.999999)the same as emptry string space argument.
-includes: [runTestCase.js]
+    (0.999999)the same as empty string space argument.
 ---*/
 
-function testcase() {
   var obj = {a1: {b1: [1,2,3,4], b2: {c1: 1, c2: 2}},a2: 'a2'};
-  return JSON.stringify(obj,null, 0.999999)=== JSON.stringify(obj);  /* emptry string should be same as no space arg */
-  }
-runTestCase(testcase);
+
+/* empty string should be same as no space arg */
+assert.sameValue(JSON.stringify(obj,null, 0.999999), JSON.stringify(obj));
diff --git a/test/built-ins/JSON/stringify/15.12.3-6-b-2.js b/test/built-ins/JSON/stringify/15.12.3-6-b-2.js
index 925f41bc3170b7db0395f1d1f7ed24827219f26c..d1bf8401b23a63d115af1b76367fa8bb3f0fd172 100644
--- a/test/built-ins/JSON/stringify/15.12.3-6-b-2.js
+++ b/test/built-ins/JSON/stringify/15.12.3-6-b-2.js
@@ -5,12 +5,10 @@
 es5id: 15.12.3-6-b-2
 description: >
     JSON.stringify treats numeric space arguments less than 1 (0)the
-    same as emptry string space argument.
-includes: [runTestCase.js]
+    same as empty string space argument.
 ---*/
 
-function testcase() {
   var obj = {a1: {b1: [1,2,3,4], b2: {c1: 1, c2: 2}},a2: 'a2'};
-  return JSON.stringify(obj,null, 0)=== JSON.stringify(obj);  /* emptry string should be same as no space arg */
-  }
-runTestCase(testcase);
+
+/* empty string should be same as no space arg */
+assert.sameValue(JSON.stringify(obj,null, 0), JSON.stringify(obj));
diff --git a/test/built-ins/JSON/stringify/15.12.3-6-b-3.js b/test/built-ins/JSON/stringify/15.12.3-6-b-3.js
index 97a087a43b9b49a158e666235cd532e0b7d6875b..9310f9470bbf95674b6ebb0d0c95a96b79c285b5 100644
--- a/test/built-ins/JSON/stringify/15.12.3-6-b-3.js
+++ b/test/built-ins/JSON/stringify/15.12.3-6-b-3.js
@@ -5,12 +5,10 @@
 es5id: 15.12.3-6-b-3
 description: >
     JSON.stringify treats numeric space arguments less than 1 (-5) the
-    same as emptry string space argument.
-includes: [runTestCase.js]
+    same as empty string space argument.
 ---*/
 
-function testcase() {
   var obj = {a1: {b1: [1,2,3,4], b2: {c1: 1, c2: 2}},a2: 'a2'};
-  return JSON.stringify(obj,null, -5)=== JSON.stringify(obj);  /* emptry string should be same as no space arg */
-  }
-runTestCase(testcase);
+
+  /* empty string should be same as no space arg */
+  assert.sameValue(JSON.stringify(obj,null, -5), JSON.stringify(obj));
diff --git a/test/built-ins/JSON/stringify/15.12.3_4-1-1.js b/test/built-ins/JSON/stringify/15.12.3_4-1-1.js
index fc6dd799cefa55889d7e090d6e3250104c8159a2..f9b5f68ab3b846ae3519141110ab98784b4602ae 100644
--- a/test/built-ins/JSON/stringify/15.12.3_4-1-1.js
+++ b/test/built-ins/JSON/stringify/15.12.3_4-1-1.js
@@ -4,16 +4,11 @@
 /*---
 es5id: 15.12.3_4-1-1
 description: JSON.stringify a circular object throws a error
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
   var obj = {};
   obj.prop = obj;
-  try {
+
+assert.throws(TypeError, function() {
      JSON.stringify(obj);
-     return false;  // should not reach here
-     }
-   catch (e) {return true}
-  }
-runTestCase(testcase);
+});
diff --git a/test/built-ins/JSON/stringify/15.12.3_4-1-2.js b/test/built-ins/JSON/stringify/15.12.3_4-1-2.js
index 9a960b0075a39f390a06b87dd9f387641d852128..a79907bd0faa48d401ce7a84a3e01eeaec4ee8aa 100644
--- a/test/built-ins/JSON/stringify/15.12.3_4-1-2.js
+++ b/test/built-ins/JSON/stringify/15.12.3_4-1-2.js
@@ -4,16 +4,11 @@
 /*---
 es5id: 15.12.3_4-1-2
 description: JSON.stringify a circular object throws a TypeError
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
   var obj = {};
   obj.prop = obj;
-  try {
+
+assert.throws(TypeError, function() {
      JSON.stringify(obj);
-     return false;  // should not reach here
-     }
-   catch (e) {return e.name==='TypeError'}
-  }
-runTestCase(testcase);
+});
diff --git a/test/built-ins/JSON/stringify/15.12.3_4-1-3.js b/test/built-ins/JSON/stringify/15.12.3_4-1-3.js
index e772cddfdf69c5409800383e3488fec57a8b2f41..30d0a4339c7bd45721d0047404f0321b62b3bbc1 100644
--- a/test/built-ins/JSON/stringify/15.12.3_4-1-3.js
+++ b/test/built-ins/JSON/stringify/15.12.3_4-1-3.js
@@ -4,16 +4,11 @@
 /*---
 es5id: 15.12.3_4-1-3
 description: JSON.stringify a indirectly circular object throws a error
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
   var obj = {p1: {p2: {}}};
   obj.p1.p2.prop = obj;
-  try {
+
+assert.throws(TypeError, function() {
      JSON.stringify(obj);
-     return false;  // should not reach here
-     }
-   catch (e) {return  true}
-  }
-runTestCase(testcase);
+});
diff --git a/test/built-ins/Object/create/15.2.3.5-1-2.js b/test/built-ins/Object/create/15.2.3.5-1-2.js
index 38cccf56ff4b0605b98b845d51183bb025f5611a..36226f322a7f4298051ab5957d3b53cb48e39b5b 100644
--- a/test/built-ins/Object/create/15.2.3.5-1-2.js
+++ b/test/built-ins/Object/create/15.2.3.5-1-2.js
@@ -4,15 +4,6 @@
 /*---
 es5id: 15.2.3.5-1-2
 description: Object.create TypeError is not thrown if 'O' is null
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
-        try {
             Object.create(null);
-            return true;
-        } catch (e) {
-            return false;
-        }
-    }
-runTestCase(testcase);
diff --git a/test/built-ins/Object/create/15.2.3.5-4-305.js b/test/built-ins/Object/create/15.2.3.5-4-305.js
index 0e3fe058582dbd3141866a64b9d567a1a351eebb..225047a59dc81893a040eae0c49870db59900b22 100644
--- a/test/built-ins/Object/create/15.2.3.5-4-305.js
+++ b/test/built-ins/Object/create/15.2.3.5-4-305.js
@@ -6,20 +6,12 @@ es5id: 15.2.3.5-4-305
 description: >
     Object.create defines a data property when one property in
     'Properties' is generic descriptor (8.12.9 step 4.a)
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
-
-        try {
             var newObj = Object.create({}, {
                 prop: {
                     enumerable: true
                 }
             });
-            return newObj.hasOwnProperty("prop");
-        } catch (e) {
-            return false;
-        }
-    }
-runTestCase(testcase);
+
+assert(newObj.hasOwnProperty("prop"), 'newObj.hasOwnProperty("prop") !== true');
diff --git a/test/built-ins/Object/create/15.2.3.5-4-306.js b/test/built-ins/Object/create/15.2.3.5-4-306.js
index 4965a6edf6c3ded415f954db91bf41f3af0b9507..328c209d496ad3cc71c76a567e5a927223afbac3 100644
--- a/test/built-ins/Object/create/15.2.3.5-4-306.js
+++ b/test/built-ins/Object/create/15.2.3.5-4-306.js
@@ -6,12 +6,8 @@ es5id: 15.2.3.5-4-306
 description: >
     Object.create - [[Value]] is set as undefined if it is absent in
     data descriptor of one property in 'Properties' (8.12.9 step 4.a.i)
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
-
-        try {
             var newObj = Object.create({}, {
                 prop: {
                     writable: true,
@@ -19,9 +15,6 @@ function testcase() {
                     enumerable: true
                 }
             });
-            return newObj.hasOwnProperty("prop") && newObj.prop === undefined;
-        } catch (e) {
-            return false;
-        }
-    }
-runTestCase(testcase);
+
+assert(newObj.hasOwnProperty("prop"), 'newObj.hasOwnProperty("prop") !== true');
+assert.sameValue(newObj.prop, undefined, 'newObj.prop');
diff --git a/test/built-ins/Object/create/15.2.3.5-4-39.js b/test/built-ins/Object/create/15.2.3.5-4-39.js
index 251b496d6f2dbe7e70b9541206b0cb99e0c12652..6bd0d2a9a0022eeef0fe72b1ca42accb7547c902 100644
--- a/test/built-ins/Object/create/15.2.3.5-4-39.js
+++ b/test/built-ins/Object/create/15.2.3.5-4-39.js
@@ -7,11 +7,8 @@ description: >
     Object.create - ensure that side-effects of gets occur in the same
     order as they would for: for (P in props) props[P] (15.2.3.7 step
     5.a)
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
-
         var props = {};
         props.prop1 = { value: 12, enumerable: true };
         props.prop2 = { value: true, enumerable: true };
@@ -26,10 +23,5 @@ function testcase() {
         var newObj = Object.create({}, props);
         var index = 0;
         for (var q in newObj) {
-            if (tempArray[index++] !== q && newObj.hasOwnProperty(q)) {
-                return false;
-            }
+            assert.sameValue(tempArray[index++] !== q && newObj.hasOwnProperty(q), false, 'tempArray[index++] !== q && newObj.hasOwnProperty(q)');
         }
-        return true;         
-    }
-runTestCase(testcase);
diff --git a/test/built-ins/Object/defineProperties/15.2.3.7-5-b-252.js b/test/built-ins/Object/defineProperties/15.2.3.7-5-b-252.js
index ba43a0327daf6ff48b474cf772b40a711b9ff124..5003f3e48562f268980c8adf78ecafd7c2b30eb6 100644
--- a/test/built-ins/Object/defineProperties/15.2.3.7-5-b-252.js
+++ b/test/built-ins/Object/defineProperties/15.2.3.7-5-b-252.js
@@ -6,11 +6,8 @@ es5id: 15.2.3.7-5-b-252
 description: >
     Object.defineProperties - value of 'set' property of 'descObj' is
     undefined (8.10.5 step 8.b)
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
-
         var getFun = function () {
             return 11;
         };
@@ -23,11 +20,7 @@ function testcase() {
             }
         });
 
-        try {
             var desc = Object.getOwnPropertyDescriptor(obj, "prop");
-            return obj.hasOwnProperty("prop") && typeof (desc.set) === "undefined";
-        } catch (e) {
-            return false;
-        }
-    }
-runTestCase(testcase);
+
+assert(obj.hasOwnProperty("prop"), 'obj.hasOwnProperty("prop") !== true');
+assert.sameValue(typeof (desc.set), "undefined", 'typeof (desc.set)');
diff --git a/test/built-ins/Object/defineProperties/15.2.3.7-6-a-155.js b/test/built-ins/Object/defineProperties/15.2.3.7-6-a-155.js
index 66e8c169580eda613848e35566c44f2ee1803961..b765653ef11a6b8e2856a74622ab4118b4f8cdc3 100644
--- a/test/built-ins/Object/defineProperties/15.2.3.7-6-a-155.js
+++ b/test/built-ins/Object/defineProperties/15.2.3.7-6-a-155.js
@@ -9,23 +9,17 @@ description: >
     greater than value of the length property is defined into 'O'
     without deleting any property with large index named (15.4.5.1
     step 3.f)
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
-
         var arr = [0, , 2];
 
-        try {
             Object.defineProperties(arr, {
                 length: {
                     value: 5
                 }
             });
 
-            return arr.length === 5 && arr[0] === 0 && !arr.hasOwnProperty("1") && arr[2] === 2;
-        } catch (e) {
-            return false;
-        }
-    }
-runTestCase(testcase);
+assert.sameValue(arr.length, 5, 'arr.length');
+assert.sameValue(arr[0], 0, 'arr[0]');
+assert.sameValue(arr.hasOwnProperty("1"), false, 'arr.hasOwnProperty("1")');
+assert.sameValue(arr[2], 2, 'arr[2]');
diff --git a/test/built-ins/Object/defineProperties/15.2.3.7-6-a-156.js b/test/built-ins/Object/defineProperties/15.2.3.7-6-a-156.js
index b461067e38f071ca36971d3d44729d608f2ed306..f2bd0349c10261458da4d359e1f744f5fae3aa08 100644
--- a/test/built-ins/Object/defineProperties/15.2.3.7-6-a-156.js
+++ b/test/built-ins/Object/defineProperties/15.2.3.7-6-a-156.js
@@ -8,22 +8,17 @@ description: >
     property of 'O', test the [[Value]] field of 'desc' which equals
     to value of the length property is defined into 'O' without
     deleting any property with large index named (15.4.5.1 step 3.f)
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
-
         var arr = [0, , 2];
-        try {
+
             Object.defineProperties(arr, {
                 length: {
                     value: 3
                 }
             });
 
-            return arr.length === 3 && arr[0] === 0 && !arr.hasOwnProperty("1") && arr[2] === 2;
-        } catch (e) {
-            return false;
-        }
-    }
-runTestCase(testcase);
+assert.sameValue(arr.length, 3, 'arr.length');
+assert.sameValue(arr[0], 0, 'arr[0]');
+assert.sameValue(arr.hasOwnProperty("1"), false, 'arr.hasOwnProperty("1")');
+assert.sameValue(arr[2], 2, 'arr[2]');
diff --git a/test/built-ins/Object/defineProperties/15.2.3.7-6-a-159.js b/test/built-ins/Object/defineProperties/15.2.3.7-6-a-159.js
index b95d3457ad4a83e4af72ea6dc5c400fe1c09744e..51e462ce425924ed4090619f4c613f21a3479310 100644
--- a/test/built-ins/Object/defineProperties/15.2.3.7-6-a-159.js
+++ b/test/built-ins/Object/defineProperties/15.2.3.7-6-a-159.js
@@ -8,26 +8,18 @@ description: >
     property of 'O', the [[Value]] field of 'desc' equals to value of
     the length property, test TypeError wouldn't be 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 {
             Object.defineProperties(arr, {
                 length: {
                     value: 0
                 }
             });
-            return true && arr.length === 0;
-        } catch (e) {
-            return false;
-        }
-    }
-runTestCase(testcase);
+
+assert.sameValue(arr.length, 0, 'arr.length');
diff --git a/test/built-ins/Object/defineProperties/15.2.3.7-6-a-203.js b/test/built-ins/Object/defineProperties/15.2.3.7-6-a-203.js
index c3b5ac575b564815ea7c9a3d7776a47e659e99ba..39d5ee0a638c311d4b92b591319c12aa12555443 100644
--- a/test/built-ins/Object/defineProperties/15.2.3.7-6-a-203.js
+++ b/test/built-ins/Object/defineProperties/15.2.3.7-6-a-203.js
@@ -9,10 +9,8 @@ description: >
     [[Enumerable]] of 'P' property in 'Attributes' is set as false
     value if [[Enumerable]] is absent in accessor descriptor 'desc'
     (15.4.5.1 step 4.c)
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
         var arr = [];
 
         Object.defineProperties(arr, {
@@ -24,10 +22,5 @@ function testcase() {
         });
 
         for (var i in arr) {
-            if (i === "0" && arr.hasOwnProperty("0")) {
-                return false;
-            }
+            assert.sameValue(i === "0" && arr.hasOwnProperty("0"), false, 'i === "0" && arr.hasOwnProperty("0")');
         }
-        return true;
-    }
-runTestCase(testcase);
diff --git a/test/built-ins/Object/defineProperties/15.2.3.7-6-a-29.js b/test/built-ins/Object/defineProperties/15.2.3.7-6-a-29.js
index 0b3ab37f6aac0f1993553255c786be3d0e004606..3080c1615e129b424072bed01eea48285b31e9bc 100644
--- a/test/built-ins/Object/defineProperties/15.2.3.7-6-a-29.js
+++ b/test/built-ins/Object/defineProperties/15.2.3.7-6-a-29.js
@@ -7,10 +7,8 @@ description: >
     Object.defineProperties - 'P' doesn't exist in 'O', test
     [[Enumerable]] of 'P' is set as false value if absent in data
     descriptor 'desc' (8.12.9 step 4.a.i)
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
         var obj = {};
 
         Object.defineProperties(obj, {
@@ -19,11 +17,6 @@ function testcase() {
 
         for (var prop in obj) {
             if (obj.hasOwnProperty(prop)) {
-                if (prop === "prop") {
-                    return false;
-                }
+                assert.notSameValue(prop, "prop", 'prop');
             }
         }
-        return true;
-    }
-runTestCase(testcase);
diff --git a/test/built-ins/Object/defineProperty/15.2.3.6-4-116.js b/test/built-ins/Object/defineProperty/15.2.3.6-4-116.js
index 90730a1bbf2c733e4479545e298ba565e29c6c69..65a3d68c67cb2de50a71d8d3b430e8bcffb40387 100644
--- a/test/built-ins/Object/defineProperty/15.2.3.6-4-116.js
+++ b/test/built-ins/Object/defineProperty/15.2.3.6-4-116.js
@@ -6,24 +6,22 @@ es5id: 15.2.3.6-4-116
 description: >
     Object.defineProperty - '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 arrObj = [0, 1];
         Object.defineProperty(arrObj, "1", {
             value: 1,
             configurable: false
         });
-        try {
-            Object.defineProperty(arrObj, "length", { value: 1 });
-            return false;
-        } catch (e) {
-            var desc = Object.getOwnPropertyDescriptor(arrObj, "length");
 
-            return Object.hasOwnProperty.call(arrObj, "length") && desc.value === 2 &&
-                desc.writable === true && desc.configurable === false && desc.enumerable === false;
-        }
-    }
-runTestCase(testcase);
+assert.throws(TypeError, function() {
+    Object.defineProperty(arrObj, "length", { value: 1 });
+});
+
+var desc = Object.getOwnPropertyDescriptor(arrObj, "length");
+
+assert(Object.hasOwnProperty.call(arrObj, "length"), 'Object.hasOwnProperty.call(arrObj, "length")');
+assert.sameValue(desc.value, 2, 'desc.value');
+assert.sameValue(desc.writable, true, 'desc.writable');
+assert.sameValue(desc.configurable, false, 'desc.configurable');
+assert.sameValue(desc.enumerable, false, 'desc.enumerable');
diff --git a/test/built-ins/Object/defineProperty/15.2.3.6-4-163.js b/test/built-ins/Object/defineProperty/15.2.3.6-4-163.js
index 20c373a46695b70a08cf195f539c86b1890d3555..99ad98928cf39bac3e9c2e6443d0cbb17c128ba8 100644
--- a/test/built-ins/Object/defineProperty/15.2.3.6-4-163.js
+++ b/test/built-ins/Object/defineProperty/15.2.3.6-4-163.js
@@ -8,24 +8,14 @@ description: >
     property of 'O', the [[Value]] field of 'desc' equals to value of
     the length property, test no 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 {
             Object.defineProperty(arrObj, "length", {
                 value: 0
             });
-            return true;
-        } catch (e) {
-            return false;
-        }
-    }
-runTestCase(testcase);
diff --git a/test/built-ins/Object/defineProperty/15.2.3.6-4-187.js b/test/built-ins/Object/defineProperty/15.2.3.6-4-187.js
index f1580d62b889fafaceec39acf427fccfc6952219..e6050fceb0fac32546ab409101cf4869ff6e16e5 100644
--- a/test/built-ins/Object/defineProperty/15.2.3.6-4-187.js
+++ b/test/built-ins/Object/defineProperty/15.2.3.6-4-187.js
@@ -9,24 +9,15 @@ description: >
     attribute of the length property in 'O' is false and value of
     'name' is less 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 {
             Object.defineProperty(arrObj, 1, {
                 value: "abc"
             });
 
-            return true;
-        } catch (e) {
-            return false;
-        }
-    }
-runTestCase(testcase);
diff --git a/test/built-ins/Object/defineProperty/15.2.3.6-4-2.js b/test/built-ins/Object/defineProperty/15.2.3.6-4-2.js
index 392cff8df4c614111d80691430ca2fe9e8acbe1d..d78cae8269a434a25d030e741504bd22dfb2ad96 100644
--- a/test/built-ins/Object/defineProperty/15.2.3.6-4-2.js
+++ b/test/built-ins/Object/defineProperty/15.2.3.6-4-2.js
@@ -10,22 +10,16 @@ es5id: 15.2.3.6-4-2
 description: >
     Object.defineProperty sets missing attributes to their default
     values (data properties)(8.12.9 step 4.a.i)
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
   var o = {};
 
   var desc = { value: 1 };
   Object.defineProperty(o, "foo", desc);
-  
+
   var propDesc = Object.getOwnPropertyDescriptor(o, "foo");
-  
-  if (propDesc.value        === 1 &&          // this is the value that was set
-      propDesc.writable     === false &&      // false by default
-      propDesc.enumerable   === false &&      // false by default
-      propDesc.configurable === false) {      // false by default
-    return true;
-  }
- }
-runTestCase(testcase);
+
+assert.sameValue(propDesc.value, 1, 'propDesc.value');                    // this is the value that was set
+assert.sameValue(propDesc.writable, false, 'propDesc.writable');          // false by default
+assert.sameValue(propDesc.enumerable, false, 'propDesc.enumerable');      // false by default
+assert.sameValue(propDesc.configurable, false, 'propDesc.configurable');  // false by default
diff --git a/test/built-ins/Object/defineProperty/15.2.3.6-4-3.js b/test/built-ins/Object/defineProperty/15.2.3.6-4-3.js
index ffbfc155b7c80e5ece62102c5c233d4be505f9b1..a3873b1e04cd130757cf0875437e68d37470a011 100644
--- a/test/built-ins/Object/defineProperty/15.2.3.6-4-3.js
+++ b/test/built-ins/Object/defineProperty/15.2.3.6-4-3.js
@@ -10,10 +10,8 @@ es5id: 15.2.3.6-4-3
 description: >
     Object.defineProperty sets missing attributes to their default
     values (accessor)(8.12.9 step 4.b.i)
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
   var o = {};
 
   var getter = function () { return 1; };
@@ -23,11 +21,8 @@ function testcase() {
 
   var propDesc = Object.getOwnPropertyDescriptor(o, "foo");
 
-  if (typeof(propDesc.get) === "function" &&  // the getter must be the function that was provided
-      propDesc.get === getter &&
-      propDesc.enumerable   === false &&      // false by default
-      propDesc.configurable === false) {      // false by default
-    return true;
-  }
- }
-runTestCase(testcase);
+assert.sameValue(typeof(propDesc.get), "function", 'typeof(propDesc.get)');
+assert.sameValue(propDesc.get, getter, 'propDesc.get');                   // the getter must be the function that was provided
+assert.sameValue(propDesc.set, undefined, 'propDesc.set');                // undefined by default
+assert.sameValue(propDesc.enumerable, false, 'propDesc.enumerable');      // false by default
+assert.sameValue(propDesc.configurable, false, 'propDesc.configurable');  // false by default
\ No newline at end of file
diff --git a/test/built-ins/Object/defineProperty/15.2.3.6-4-327.js b/test/built-ins/Object/defineProperty/15.2.3.6-4-327.js
index 787aecbc3e63357e6c3445636df1ac2a1bd80427..97d2ddcc78e1ee5ed677f164928378cb8c4fa0cf 100644
--- a/test/built-ins/Object/defineProperty/15.2.3.6-4-327.js
+++ b/test/built-ins/Object/defineProperty/15.2.3.6-4-327.js
@@ -6,10 +6,10 @@ es5id: 15.2.3.6-4-327
 description: >
     ES5 Attributes - property ([[Writable]] is true, [[Enumerable]] is
     true, [[Configurable]] is true) is enumerable
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
+var propertyFound = false;
+
         var obj = {};
 
         Object.defineProperty(obj, "prop", {
@@ -22,9 +22,11 @@ function testcase() {
         var desc = Object.getOwnPropertyDescriptor(obj, "prop");
         for (var property in obj) {
             if (property === "prop") {
-                return propertyDefineCorrect && desc.enumerable === true;
+                propertyFound = true;
+                break;
             }
         }
-        return false;
-    }
-runTestCase(testcase);
+
+assert(propertyFound, 'Property not found');
+assert(propertyDefineCorrect, 'propertyDefineCorrect !== true');
+assert.sameValue(desc.enumerable, true, 'desc.enumerable');
diff --git a/test/built-ins/Object/defineProperty/15.2.3.6-4-334.js b/test/built-ins/Object/defineProperty/15.2.3.6-4-334.js
index 851160e7aa9de2358bd594701dab223ca15d6959..f4322915ec1f1dea938b95c01d4bd667cb1e063b 100644
--- a/test/built-ins/Object/defineProperty/15.2.3.6-4-334.js
+++ b/test/built-ins/Object/defineProperty/15.2.3.6-4-334.js
@@ -6,10 +6,10 @@ es5id: 15.2.3.6-4-334
 description: >
     ES5 Attributes - property ([[Writable]] is true, [[Enumerable]] is
     true, [[Configurable]] is false) is enumerable
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
+var propertyFound = false;
+
         var obj = {};
 
         Object.defineProperty(obj, "prop", {
@@ -22,9 +22,11 @@ function testcase() {
         var desc = Object.getOwnPropertyDescriptor(obj, "prop");
         for (var p in obj) {
             if (p === "prop") {
-                return propertyDefineCorrect && desc.enumerable === true;
+                propertyFound = true;
+                break;
             }
         }
-        return false;
-    }
-runTestCase(testcase);
+
+assert(propertyFound, 'Property not found');
+assert(propertyDefineCorrect, 'propertyDefineCorrect !== true');
+assert.sameValue(desc.enumerable, true, 'desc.enumerable');
diff --git a/test/built-ins/Object/defineProperty/15.2.3.6-4-341.js b/test/built-ins/Object/defineProperty/15.2.3.6-4-341.js
index 87bfe85388ea89c243289c4686e2f878f804d693..1a2324b5f1602e4f7f6791135f31d042379f394f 100644
--- a/test/built-ins/Object/defineProperty/15.2.3.6-4-341.js
+++ b/test/built-ins/Object/defineProperty/15.2.3.6-4-341.js
@@ -6,10 +6,8 @@ es5id: 15.2.3.6-4-341
 description: >
     ES5 Attributes - property ([[Writable]] is true, [[Enumerable]] is
     false, [[Configurable]] is true) is non-enumerable
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
         var obj = {};
 
         Object.defineProperty(obj, "prop", {
@@ -21,10 +19,8 @@ function testcase() {
         var propertyDefineCorrect = obj.hasOwnProperty("prop");
         var desc = Object.getOwnPropertyDescriptor(obj, "prop");
         for (var p in obj) {
-            if (p === "prop") {
-                return false;
-            }
+            assert.notSameValue(p, "prop", 'p');
         }
-        return propertyDefineCorrect && desc.enumerable === false;
-    }
-runTestCase(testcase);
+
+assert(propertyDefineCorrect, 'propertyDefineCorrect !== true');
+assert.sameValue(desc.enumerable, false, 'desc.enumerable');
diff --git a/test/built-ins/Object/defineProperty/15.2.3.6-4-348.js b/test/built-ins/Object/defineProperty/15.2.3.6-4-348.js
index 701a132fb40d05888baacfd9d05ce10299756627..90804ded55aad452aea624f986f7b51915e09a8a 100644
--- a/test/built-ins/Object/defineProperty/15.2.3.6-4-348.js
+++ b/test/built-ins/Object/defineProperty/15.2.3.6-4-348.js
@@ -6,10 +6,8 @@ es5id: 15.2.3.6-4-348
 description: >
     ES5 Attributes - property ([[Writable]] is true, [[Enumerable]] is
     false, [[Configurable]] is false) is non-enumerable
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
         var obj = {};
 
         Object.defineProperty(obj, "prop", {
@@ -21,10 +19,8 @@ function testcase() {
         var propertyDefineCorrect = obj.hasOwnProperty("prop");
         var desc = Object.getOwnPropertyDescriptor(obj, "prop");
         for (var p in obj) {
-            if (p === "prop") {
-                return false;
-            }
+            assert.notSameValue(p, "prop", 'p');
         }
-        return propertyDefineCorrect && desc.enumerable === false;
-    }
-runTestCase(testcase);
+
+assert(propertyDefineCorrect, 'propertyDefineCorrect !== true');
+assert.sameValue(desc.enumerable, false, 'desc.enumerable');
diff --git a/test/built-ins/Object/defineProperty/15.2.3.6-4-355.js b/test/built-ins/Object/defineProperty/15.2.3.6-4-355.js
index b5d9f515f7a70b17f427808e27864d1817758b5c..7b08f6ee6970a9728372d1fceedf75f5d239849b 100644
--- a/test/built-ins/Object/defineProperty/15.2.3.6-4-355.js
+++ b/test/built-ins/Object/defineProperty/15.2.3.6-4-355.js
@@ -6,10 +6,10 @@ es5id: 15.2.3.6-4-355
 description: >
     ES5 Attributes - property ([[Writable]] is false, [[Enumerable]]
     is true, [[Configurable]] is true) is enumerable
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
+var propertyFound = false;
+
         var obj = {};
 
         Object.defineProperty(obj, "prop", {
@@ -22,9 +22,11 @@ function testcase() {
         var desc = Object.getOwnPropertyDescriptor(obj, "prop");
         for (var property in obj) {
             if (property === "prop") {
-                return propertyDefineCorrect && desc.enumerable === true;
+                propertyFound = true;
+                break;
             }
         }
-        return false;
-    }
-runTestCase(testcase);
+
+assert(propertyFound, 'Property not found');
+assert(propertyDefineCorrect, 'propertyDefineCorrect !== true');
+assert.sameValue(desc.enumerable, true, 'desc.enumerable');
diff --git a/test/built-ins/Object/defineProperty/15.2.3.6-4-362.js b/test/built-ins/Object/defineProperty/15.2.3.6-4-362.js
index b829fc5a0d6aec63c5b7892be6c579779288b5c0..1e5d40c2e2f6ce8fe3a79090304df50ee0c5aec8 100644
--- a/test/built-ins/Object/defineProperty/15.2.3.6-4-362.js
+++ b/test/built-ins/Object/defineProperty/15.2.3.6-4-362.js
@@ -6,10 +6,10 @@ es5id: 15.2.3.6-4-362
 description: >
     ES5 Attributes - property ([[Writable]] is false, [[Enumerable]]
     is true, [[Configurable]] is false) is enumerable
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
+var propertyFound = false;
+
         var obj = {};
         Object.defineProperty(obj, "prop", {
             value: 2010,
@@ -21,9 +21,11 @@ function testcase() {
         var desc = Object.getOwnPropertyDescriptor(obj, "prop");
         for (var property in obj) {
             if (property === "prop") {
-                return propertyDefineCorrect && desc.enumerable === true;
+                propertyFound = true;
+                break;
             }
         }
-        return false;
-    }
-runTestCase(testcase);
+
+assert(propertyFound, 'Property not found');
+assert(propertyDefineCorrect, 'propertyDefineCorrect !== true');
+assert.sameValue(desc.enumerable, true, 'desc.enumerable');
diff --git a/test/built-ins/Object/defineProperty/15.2.3.6-4-369.js b/test/built-ins/Object/defineProperty/15.2.3.6-4-369.js
index 3104d404d8cd4b9899dfe56ba2f3021f6f33e6a4..1950c4a80abcfef42a8e275ff3732067331c7b0b 100644
--- a/test/built-ins/Object/defineProperty/15.2.3.6-4-369.js
+++ b/test/built-ins/Object/defineProperty/15.2.3.6-4-369.js
@@ -6,10 +6,8 @@ es5id: 15.2.3.6-4-369
 description: >
     ES5 Attributes - property ([[Writable]] is false, [[Enumerable]]
     is false, [[Configurable]] is true) is non-enumerable
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
         var obj = {};
 
         Object.defineProperty(obj, "prop", {
@@ -21,10 +19,8 @@ function testcase() {
         var propertyDefineCorrect = obj.hasOwnProperty("prop");
         var desc = Object.getOwnPropertyDescriptor(obj, "prop");
         for (var p in obj) {
-            if (p === "prop") {
-                return false;
-            }
+            assert.notSameValue(p, "prop", 'p');
         }
-        return propertyDefineCorrect && desc.enumerable === false;
-    }
-runTestCase(testcase);
+
+assert(propertyDefineCorrect, 'propertyDefineCorrect !== true');
+assert.sameValue(desc.enumerable, false, 'desc.enumerable');
diff --git a/test/built-ins/Object/defineProperty/15.2.3.6-4-376.js b/test/built-ins/Object/defineProperty/15.2.3.6-4-376.js
index bffdefece35d2ceb299b993ace515e9e6347126b..310fee16eb5d4915ba8700300056471f9d69a3b3 100644
--- a/test/built-ins/Object/defineProperty/15.2.3.6-4-376.js
+++ b/test/built-ins/Object/defineProperty/15.2.3.6-4-376.js
@@ -6,10 +6,8 @@ es5id: 15.2.3.6-4-376
 description: >
     ES5 Attributes - property ([[Writable]] is false, [[Enumerable]]
     is false, [[Configurable]] is false) is non-enumerable
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
         var obj = {};
 
         Object.defineProperty(obj, "prop", {
@@ -21,10 +19,8 @@ function testcase() {
         var propertyDefineCorrect = obj.hasOwnProperty("prop");
         var desc = Object.getOwnPropertyDescriptor(obj, "prop");
         for (var p in obj) {
-            if (p === "prop") {
-                return false;
-            }
+            assert.notSameValue(p, "prop", 'p');
         }
-        return propertyDefineCorrect && desc.enumerable === false;
-    }
-runTestCase(testcase);
+
+assert(propertyDefineCorrect, 'propertyDefineCorrect !== true');
+assert.sameValue(desc.enumerable, false, 'desc.enumerable');
diff --git a/test/built-ins/Object/defineProperty/15.2.3.6-4-4.js b/test/built-ins/Object/defineProperty/15.2.3.6-4-4.js
index efe4a2288f901b4ac2c4120893b3fb3719272cca..5e08bb35a47ad0a1ce6d40a4de212ecea95b07d5 100644
--- a/test/built-ins/Object/defineProperty/15.2.3.6-4-4.js
+++ b/test/built-ins/Object/defineProperty/15.2.3.6-4-4.js
@@ -10,21 +10,16 @@ es5id: 15.2.3.6-4-4
 description: >
     Object.defineProperty defines a data property if given a generic
     desc(8.12.9 step 4.a.i)
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
   var o = {};
   
   var desc = {};
   Object.defineProperty(o, "foo", desc);
 
   var propDesc = Object.getOwnPropertyDescriptor(o, "foo");
-  if (propDesc.value        === undefined &&  // this is the value that was set
-      propDesc.writable     === false &&      // false by default
-      propDesc.enumerable   === false &&      // false by default
-      propDesc.configurable === false) {      // false by default
-    return true;
-  }
- }
-runTestCase(testcase);
+
+assert.sameValue(propDesc.value, undefined, 'propDesc.value');            // undefined by default
+assert.sameValue(propDesc.writable, false, 'propDesc.writable');          // false by default
+assert.sameValue(propDesc.enumerable, false, 'propDesc.enumerable');      // false by default
+assert.sameValue(propDesc.configurable, false, 'propDesc.configurable');  // false by default
diff --git a/test/built-ins/Object/defineProperty/15.2.3.6-4-424.js b/test/built-ins/Object/defineProperty/15.2.3.6-4-424.js
index 4d09765c28d5401f38c2ff438e3f2c687fcc9e72..1cfca488ebd880b6513a0a1c302591da0adbbe62 100644
--- a/test/built-ins/Object/defineProperty/15.2.3.6-4-424.js
+++ b/test/built-ins/Object/defineProperty/15.2.3.6-4-424.js
@@ -7,10 +7,10 @@ description: >
     ES5 Attributes - property ([[Get]] is undefined, [[Set]] is
     undefined, [[Enumerable]] is true, [[Configurable]] is true) is
     enumerable
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
+var propertyFound = false;
+
         var obj = {};
 
         Object.defineProperty(obj, "prop", {
@@ -25,10 +25,11 @@ function testcase() {
 
         for (var p in obj) {
             if (p === "prop") {
-                return propertyDefineCorrect && desc.enumerable === true;
+                propertyFound = true;
+                break;
             }
         }
 
-        return false;
-    }
-runTestCase(testcase);
+assert(propertyFound, 'Property not found');
+assert(propertyDefineCorrect, 'propertyDefineCorrect !== true');
+assert.sameValue(desc.enumerable, true, 'desc.enumerable');
diff --git a/test/built-ins/Object/defineProperty/15.2.3.6-4-433.js b/test/built-ins/Object/defineProperty/15.2.3.6-4-433.js
index 225bf4f4bbcecf437154a2fef041d7a039053aec..e374de5ab649d87a653465c80a44a997279751c4 100644
--- a/test/built-ins/Object/defineProperty/15.2.3.6-4-433.js
+++ b/test/built-ins/Object/defineProperty/15.2.3.6-4-433.js
@@ -7,10 +7,10 @@ description: >
     ES5 Attributes - property ([[Get]] is undefined, [[Set]] is
     undefined, [[Enumerable]] is true, [[Configurable]] is false) is
     enumerable
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
+var propertyFound = false;
+
         var obj = {};
 
         Object.defineProperty(obj, "prop", {
@@ -25,10 +25,11 @@ function testcase() {
 
         for (var p in obj) {
             if (p === "prop") {
-                return propertyDefineCorrect && desc.enumerable === true;
+                propertyFound = true;
+                break;
             }
         }
 
-        return false;
-    }
-runTestCase(testcase);
+assert(propertyFound, 'Property not found');
+assert(propertyDefineCorrect, 'propertyDefineCorrect !== true');
+assert.sameValue(desc.enumerable, true, 'desc.enumerable');
diff --git a/test/built-ins/Object/defineProperty/15.2.3.6-4-442.js b/test/built-ins/Object/defineProperty/15.2.3.6-4-442.js
index 8ba4f14f5dbbbfe884c9dfe85fa0e229304b8900..72f9bf32ff29f2d088713ac69d327b678a065d07 100644
--- a/test/built-ins/Object/defineProperty/15.2.3.6-4-442.js
+++ b/test/built-ins/Object/defineProperty/15.2.3.6-4-442.js
@@ -7,10 +7,8 @@ description: >
     ES5 Attributes - property ([[Get]] is undefined, [[Set]] is
     undefined, [[Enumerable]] is false, [[Configurable]] is true) is
     non-enumerable
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
         var obj = {};
 
         Object.defineProperty(obj, "prop", {
@@ -24,11 +22,8 @@ function testcase() {
         var desc = Object.getOwnPropertyDescriptor(obj, "prop");
 
         for (var p in obj) {
-            if (p === "prop") {
-                return false;
-            }
+            assert.notSameValue(p, "prop", 'p');
         }
 
-        return propertyDefineCorrect && desc.enumerable === false;
-    }
-runTestCase(testcase);
+assert(propertyDefineCorrect, 'propertyDefineCorrect !== true');
+assert.sameValue(desc.enumerable, false, 'desc.enumerable');
diff --git a/test/built-ins/Object/defineProperty/15.2.3.6-4-451.js b/test/built-ins/Object/defineProperty/15.2.3.6-4-451.js
index 538b67f16747a5dd79114296e5b0838df088c786..ef9fb05c2931c7c9e542016e3ec2105785a5a528 100644
--- a/test/built-ins/Object/defineProperty/15.2.3.6-4-451.js
+++ b/test/built-ins/Object/defineProperty/15.2.3.6-4-451.js
@@ -7,10 +7,8 @@ description: >
     ES5 Attributes - property ([[Get]] is undefined, [[Set]] is
     undefined, [[Enumerable]] is false, [[Configurable]] is false) is
     non-enumerable
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
         var obj = {};
 
         Object.defineProperty(obj, "prop", {
@@ -24,11 +22,8 @@ function testcase() {
         var desc = Object.getOwnPropertyDescriptor(obj, "prop");
 
         for (var p in obj) {
-            if (p === "prop") {
-                return false;
-            }
+            assert.notSameValue(p, "prop", 'p');
         }
 
-        return propertyDefineCorrect && desc.enumerable === false;
-    }
-runTestCase(testcase);
+assert(propertyDefineCorrect, 'propertyDefineCorrect !== true');
+assert.sameValue(desc.enumerable, false, 'desc.enumerable');
diff --git a/test/built-ins/Object/defineProperty/15.2.3.6-4-460.js b/test/built-ins/Object/defineProperty/15.2.3.6-4-460.js
index 17bb0bf7f571dd44decae625524bf6cc1514a563..0ff4a8016ebde70b0f026dddc848dc55c8a05480 100644
--- a/test/built-ins/Object/defineProperty/15.2.3.6-4-460.js
+++ b/test/built-ins/Object/defineProperty/15.2.3.6-4-460.js
@@ -7,10 +7,10 @@ description: >
     ES5 Attributes - property ([[Get]] is undefined, [[Set]] is a
     Function, [[Enumerable]] is true, [[Configurable]] is true) is
     enumerable
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
+var propertyFound = false;
+
         var obj = {};
 
         var verifySetFunc = "data";
@@ -30,10 +30,11 @@ function testcase() {
 
         for (var p in obj) {
             if (p === "prop") {
-                return propertyDefineCorrect && desc.enumerable === true;
+                propertyFound = true;
+                break;
             }
         }
 
-        return false;
-    }
-runTestCase(testcase);
+assert(propertyFound, 'Property not found');
+assert(propertyDefineCorrect, 'propertyDefineCorrect !== true');
+assert.sameValue(desc.enumerable, true, 'desc.enumerable');
diff --git a/test/built-ins/Object/defineProperty/15.2.3.6-4-469.js b/test/built-ins/Object/defineProperty/15.2.3.6-4-469.js
index 1b7d816c257bfd9de7362bda98e2d3bf7ee77b56..391bbf7aedfab9e5a32f58d3b4c95f4d1c2f93f1 100644
--- a/test/built-ins/Object/defineProperty/15.2.3.6-4-469.js
+++ b/test/built-ins/Object/defineProperty/15.2.3.6-4-469.js
@@ -7,10 +7,10 @@ description: >
     ES5 Attributes - property ([[Get]] is undefined, [[Set]] is a
     Function, [[Enumerable]] is true, [[Configurable]] is false) is
     enumerable
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
+var propertyFound = false;
+
         var obj = {};
 
         var verifySetFunc = "data";
@@ -30,10 +30,11 @@ function testcase() {
 
         for (var p in obj) {
             if (p === "prop") {
-                return propertyDefineCorrect && desc.enumerable === true;
+                propertyFound = true;
+                break;
             }
         }
 
-        return false;
-    }
-runTestCase(testcase);
+assert(propertyFound, 'Property not found');
+assert(propertyDefineCorrect, 'propertyDefineCorrect !== true');
+assert.sameValue(desc.enumerable, true, 'desc.enumerable');
diff --git a/test/built-ins/Object/defineProperty/15.2.3.6-4-478.js b/test/built-ins/Object/defineProperty/15.2.3.6-4-478.js
index 62d633da0b70813672dc2792d8b7dff902e2a794..519d80e7bfc6c078e952f698447777f15f1e2692 100644
--- a/test/built-ins/Object/defineProperty/15.2.3.6-4-478.js
+++ b/test/built-ins/Object/defineProperty/15.2.3.6-4-478.js
@@ -7,10 +7,8 @@ description: >
     ES5 Attributes - property ([[Get]] is undefined, [[Set]] is a
     Function, [[Enumerable]] is false, [[Configurable]] is true) is
     non-enumerable
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
         var obj = {};
 
         var verifySetFunc = "data";
@@ -29,11 +27,8 @@ function testcase() {
         var desc = Object.getOwnPropertyDescriptor(obj, "prop");
 
         for (var p in obj) {
-            if (p === "prop") {
-                return false;
-            }
+            assert.notSameValue(p, "prop", 'p');
         }
 
-        return propertyDefineCorrect && desc.enumerable === false;
-    }
-runTestCase(testcase);
+assert(propertyDefineCorrect, 'propertyDefineCorrect !== true');
+assert.sameValue(desc.enumerable, false, 'desc.enumerable');
diff --git a/test/built-ins/Object/defineProperty/15.2.3.6-4-487.js b/test/built-ins/Object/defineProperty/15.2.3.6-4-487.js
index a9595e09459c9cc8df951b3468acd8e9c0bcdc4c..8aaf8e2ba221c63f526bc213d7107100fc4c1605 100644
--- a/test/built-ins/Object/defineProperty/15.2.3.6-4-487.js
+++ b/test/built-ins/Object/defineProperty/15.2.3.6-4-487.js
@@ -7,10 +7,8 @@ description: >
     ES5 Attributes - property ([[Get]] is undefined, [[Set]] is a
     Function, [[Enumerable]] is false, [[Configurable]] is false) is
     non-enumerable
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
         var obj = {};
 
         var verifySetFunc = "data";
@@ -29,11 +27,8 @@ function testcase() {
         var desc = Object.getOwnPropertyDescriptor(obj, "prop");
 
         for (var p in obj) {
-            if (p === "prop") {
-                return false;
-            }
+            assert.notSameValue(p, "prop", 'p');
         }
 
-        return propertyDefineCorrect && desc.enumerable === false;
-    }
-runTestCase(testcase);
+assert(propertyDefineCorrect, 'propertyDefineCorrect !== true');
+assert.sameValue(desc.enumerable, false, 'desc.enumerable');
diff --git a/test/built-ins/Object/defineProperty/15.2.3.6-4-496.js b/test/built-ins/Object/defineProperty/15.2.3.6-4-496.js
index 9610f8355c2288e6d9c502f12c31491f4aaeceb1..2e63e773ba2520b6e6b4cfb06ea96992cdcc67c5 100644
--- a/test/built-ins/Object/defineProperty/15.2.3.6-4-496.js
+++ b/test/built-ins/Object/defineProperty/15.2.3.6-4-496.js
@@ -7,10 +7,10 @@ description: >
     ES5 Attributes - property ([[Get]] is a Function, [[Set]] is
     undefined, [[Enumerable]] is true, [[Configurable]] is true) is
     enumerable
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
+var propertyFound = false;
+
         var obj = {};
 
         var getFunc = function () {
@@ -29,10 +29,11 @@ function testcase() {
 
         for (var p in obj) {
             if (p === "prop") {
-                return propertyDefineCorrect && desc.enumerable === true;
+                propertyFound = true;
+                break;
             }
         }
 
-        return false;
-    }
-runTestCase(testcase);
+assert(propertyFound, 'Property not found');
+assert(propertyDefineCorrect, 'propertyDefineCorrect !== true');
+assert.sameValue(desc.enumerable, true, 'desc.enumerable');
diff --git a/test/built-ins/Object/defineProperty/15.2.3.6-4-505.js b/test/built-ins/Object/defineProperty/15.2.3.6-4-505.js
index aa37ba9ceb4b01fe5a33688563d448de8d6db28b..f15171ddcd669392c8c3e705babac34f14f7c9f3 100644
--- a/test/built-ins/Object/defineProperty/15.2.3.6-4-505.js
+++ b/test/built-ins/Object/defineProperty/15.2.3.6-4-505.js
@@ -7,10 +7,10 @@ description: >
     ES5 Attributes - property ([[Get]] is a Function, [[Set]] is
     undefined, [[Enumerable]] is true, [[Configurable]] is false) is
     enumerable
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
+var propertyFound = false;
+
         var obj = {};
 
         var getFunc = function () {
@@ -29,10 +29,11 @@ function testcase() {
 
         for (var p in obj) {
             if (p === "prop") {
-                return propertyDefineCorrect && desc.enumerable === true;
+                propertyFound = true;
+                break;
             }
         }
 
-        return false;
-    }
-runTestCase(testcase);
+assert(propertyFound, 'Property not found');
+assert(propertyDefineCorrect, 'propertyDefineCorrect !== true');
+assert.sameValue(desc.enumerable, true, 'desc.enumerable');
diff --git a/test/built-ins/Object/defineProperty/15.2.3.6-4-514.js b/test/built-ins/Object/defineProperty/15.2.3.6-4-514.js
index b611b187e595022a2a199cb430684d74fa61b47e..6b80aa137434cf23ccd041c6c12dce1c1c93cf69 100644
--- a/test/built-ins/Object/defineProperty/15.2.3.6-4-514.js
+++ b/test/built-ins/Object/defineProperty/15.2.3.6-4-514.js
@@ -7,10 +7,8 @@ description: >
     ES5 Attributes - property ([[Get]] is a Function, [[Set]] is
     undefined, [[Enumerable]] is false, [[Configurable]] is true) is
     non-enumerable
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
         var obj = {};
 
         var getFunc = function () {
@@ -28,11 +26,8 @@ function testcase() {
         var desc = Object.getOwnPropertyDescriptor(obj, "prop");
 
         for (var p in obj) {
-            if (p === "prop") {
-                return false;
-            }
+            assert.notSameValue(p, "prop", 'p');
         }
 
-        return propertyDefineCorrect && desc.enumerable === false;
-    }
-runTestCase(testcase);
+assert(propertyDefineCorrect, 'propertyDefineCorrect !== true');
+assert.sameValue(desc.enumerable, false, 'desc.enumerable');
diff --git a/test/built-ins/Object/defineProperty/15.2.3.6-4-523.js b/test/built-ins/Object/defineProperty/15.2.3.6-4-523.js
index 7355599c5a626db0e60fc18c191c0032db6f55fa..8c1377dc0ef6436d9db6dde8ed311451438046ac 100644
--- a/test/built-ins/Object/defineProperty/15.2.3.6-4-523.js
+++ b/test/built-ins/Object/defineProperty/15.2.3.6-4-523.js
@@ -7,10 +7,8 @@ description: >
     ES5 Attributes - property ([[Get]] is a Function, [[Set]] is
     undefined, [[Enumerable]] is false, [[Configurable]] is false) is
     non-enumerable
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
         var obj = {};
 
         var getFunc = function () {
@@ -28,11 +26,8 @@ function testcase() {
         var desc = Object.getOwnPropertyDescriptor(obj, "prop");
 
         for (var p in obj) {
-            if (p === "prop") {
-                return false;
-            }
+            assert.notSameValue(p, "prop", 'p');
         }
 
-        return propertyDefineCorrect && desc.enumerable === false;
-    }
-runTestCase(testcase);
+assert(propertyDefineCorrect, 'propertyDefineCorrect !== true');
+assert.sameValue(desc.enumerable, false, 'desc.enumerable');
diff --git a/test/built-ins/Object/defineProperty/15.2.3.6-4-532.js b/test/built-ins/Object/defineProperty/15.2.3.6-4-532.js
index 2dcacdd230eb9e9fa869f3172424996b61a22d85..ee3370eaf545889cd58e9999fe1f92ead485bd49 100644
--- a/test/built-ins/Object/defineProperty/15.2.3.6-4-532.js
+++ b/test/built-ins/Object/defineProperty/15.2.3.6-4-532.js
@@ -7,10 +7,10 @@ description: >
     ES5 Attributes - property ([[Get]] is a Function, [[Set]] is a
     Function, [[Enumerable]] is true, [[Configurable]] is true) is
     enumerable
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
+var propertyFound = false;
+
         var obj = {};
 
         var getFunc = function () {
@@ -34,10 +34,11 @@ function testcase() {
 
         for (var p in obj) {
             if (p === "prop") {
-                return propertyDefineCorrect && desc.enumerable === true;
+                propertyFound = true;
+                break;
             }
         }
 
-        return false;
-    }
-runTestCase(testcase);
+assert(propertyFound, 'Property not found');
+assert(propertyDefineCorrect, 'propertyDefineCorrect !== true');
+assert.sameValue(desc.enumerable, true, 'desc.enumerable');
diff --git a/test/built-ins/Object/defineProperty/15.2.3.6-4-541.js b/test/built-ins/Object/defineProperty/15.2.3.6-4-541.js
index d340a4fdf827294bceec4c97e9517c7819dd2301..4651f86e435c2381cb04bda705033a25a1ba7340 100644
--- a/test/built-ins/Object/defineProperty/15.2.3.6-4-541.js
+++ b/test/built-ins/Object/defineProperty/15.2.3.6-4-541.js
@@ -7,10 +7,10 @@ description: >
     ES5 Attributes - property ([[Get]] is a Function, [[Set]] is a
     Function, [[Enumerable]] is true, [[Configurable]] is false) is
     enumerable
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
+var propertyFound = false;
+
         var obj = {};
 
         var getFunc = function () {
@@ -34,10 +34,11 @@ function testcase() {
 
         for (var p in obj) {
             if (p === "prop") {
-                return propertyDefineCorrect && desc.enumerable === true;
+                propertyFound = true;
+                break;
             }
         }
 
-        return false;
-    }
-runTestCase(testcase);
+assert(propertyFound, 'Property not found');
+assert(propertyDefineCorrect, 'propertyDefineCorrect !== true');
+assert.sameValue(desc.enumerable, true, 'desc.enumerable');
diff --git a/test/built-ins/Object/defineProperty/15.2.3.6-4-550.js b/test/built-ins/Object/defineProperty/15.2.3.6-4-550.js
index 85840516a254c2a8719bc73616401af83d727f28..bb17ddc1b5eae74448a0d49af987e9f7d0451296 100644
--- a/test/built-ins/Object/defineProperty/15.2.3.6-4-550.js
+++ b/test/built-ins/Object/defineProperty/15.2.3.6-4-550.js
@@ -7,10 +7,8 @@ description: >
     ES5 Attributes - property ([[Get]] is a Function, [[Set]] is a
     Function, [[Enumerable]] is false, [[Configurable]] is true) is
     non-enumerable
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
         var obj = {};
 
         var getFunc = function () {
@@ -33,11 +31,8 @@ function testcase() {
         var desc = Object.getOwnPropertyDescriptor(obj, "prop");
 
         for (var p in obj) {
-            if (p === "prop") {
-                return false;
-            }
+            assert.notSameValue(p, "prop", 'p');
         }
 
-        return propertyDefineCorrect && desc.enumerable === false;
-    }
-runTestCase(testcase);
+assert(propertyDefineCorrect, 'propertyDefineCorrect !== true');
+assert.sameValue(desc.enumerable, false, 'desc.enumerable');
diff --git a/test/built-ins/Object/defineProperty/15.2.3.6-4-559.js b/test/built-ins/Object/defineProperty/15.2.3.6-4-559.js
index 40bbe96d5211d4ccc3553189c9c7615441d81fa7..f2f308b34d6c7c314e7fa1f47440161e3de3b4c8 100644
--- a/test/built-ins/Object/defineProperty/15.2.3.6-4-559.js
+++ b/test/built-ins/Object/defineProperty/15.2.3.6-4-559.js
@@ -7,10 +7,8 @@ description: >
     ES5 Attributes - property ([[Get]] is a Function, [[Set]] is a
     Function, [[Enumerable]] is false, [[Configurable]] is false) is
     non-enumerable
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
         var obj = {};
 
         var getFunc = function () {
@@ -33,11 +31,8 @@ function testcase() {
         var desc = Object.getOwnPropertyDescriptor(obj, "prop");
 
         for (var p in obj) {
-            if (p === "prop") {
-                return false;
-            }
+            assert.notSameValue(p, "prop", 'p');
         }
 
-        return propertyDefineCorrect && desc.enumerable === false;
-    }
-runTestCase(testcase);
+assert(propertyDefineCorrect, 'propertyDefineCorrect !== true');
+assert.sameValue(desc.enumerable, false, 'desc.enumerable');
diff --git a/test/built-ins/Object/getOwnPropertyDescriptor/15.2.3.3-4-224.js b/test/built-ins/Object/getOwnPropertyDescriptor/15.2.3.3-4-224.js
index d1673e085af801117468ab0161df920be2cc9f6b..1c84fe82641ed77c1e8a4b5703acce5df39a8ea3 100644
--- a/test/built-ins/Object/getOwnPropertyDescriptor/15.2.3.3-4-224.js
+++ b/test/built-ins/Object/getOwnPropertyDescriptor/15.2.3.3-4-224.js
@@ -6,19 +6,12 @@ es5id: 15.2.3.3-4-224
 description: >
     Object.getOwnPropertyDescriptor - ensure that 'value' property of
     returned object is data property with correct 'writable' attribute
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
         var obj = { "property": "ownDataProperty" };
 
         var desc = Object.getOwnPropertyDescriptor(obj, "property");
 
-        try {
             desc.value = "overwriteDataProperty";
-            return desc.value === "overwriteDataProperty";
-        } catch (e) {
-            return false;
-        }
-    }
-runTestCase(testcase);
+
+assert.sameValue(desc.value, "overwriteDataProperty", 'desc.value');
diff --git a/test/built-ins/Object/getOwnPropertyDescriptor/15.2.3.3-4-226.js b/test/built-ins/Object/getOwnPropertyDescriptor/15.2.3.3-4-226.js
index 7e0bfdb820c980caea99d6b124608303b0f7c214..326e8d419292cb31209fe2477bfa2fc747c9c1f5 100644
--- a/test/built-ins/Object/getOwnPropertyDescriptor/15.2.3.3-4-226.js
+++ b/test/built-ins/Object/getOwnPropertyDescriptor/15.2.3.3-4-226.js
@@ -7,23 +7,16 @@ description: >
     Object.getOwnPropertyDescriptor - ensure that 'value' property of
     returned object is data property with correct 'configurable'
     attribute
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
         var obj = { "property": "ownDataProperty" };
 
         var desc = Object.getOwnPropertyDescriptor(obj, "property");
 
         var propDefined = "value" in desc;
 
-        try {
             delete desc.value;
             var propDeleted = "value" in desc;
 
-            return propDefined && !propDeleted;
-        } catch (e) {
-            return false;
-        }
-    }
-runTestCase(testcase);
+assert(propDefined, 'propDefined !== true');
+assert.sameValue(propDeleted, false, 'propDeleted');
diff --git a/test/built-ins/Object/getOwnPropertyDescriptor/15.2.3.3-4-228.js b/test/built-ins/Object/getOwnPropertyDescriptor/15.2.3.3-4-228.js
index 45c701c806ddd0f8370f5214cb96f5f09e7a8d7d..7bd355aae384901a180fe87d63fc1a377fd35b25 100644
--- a/test/built-ins/Object/getOwnPropertyDescriptor/15.2.3.3-4-228.js
+++ b/test/built-ins/Object/getOwnPropertyDescriptor/15.2.3.3-4-228.js
@@ -7,19 +7,12 @@ description: >
     Object.getOwnPropertyDescriptor - ensure that 'writable' property
     of returned object is data property with correct 'writable'
     attribute
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
         var obj = { "property": "ownDataProperty" };
 
         var desc = Object.getOwnPropertyDescriptor(obj, "property");
 
-        try {
             desc.writable = "overwriteDataProperty";
-            return desc.writable === "overwriteDataProperty";
-        } catch (e) {
-            return false;
-        }
-    }
-runTestCase(testcase);
+
+assert.sameValue(desc.writable, "overwriteDataProperty", 'desc.writable');
diff --git a/test/built-ins/Object/getOwnPropertyDescriptor/15.2.3.3-4-230.js b/test/built-ins/Object/getOwnPropertyDescriptor/15.2.3.3-4-230.js
index 76fabb368072451072568f955241f0e9f52c90b5..0e8d7c9208014be1b9d835c4a8eb104b08e8b54e 100644
--- a/test/built-ins/Object/getOwnPropertyDescriptor/15.2.3.3-4-230.js
+++ b/test/built-ins/Object/getOwnPropertyDescriptor/15.2.3.3-4-230.js
@@ -7,23 +7,16 @@ description: >
     Object.getOwnPropertyDescriptor - ensure that 'writable' property
     of returned object is data property with correct 'configurable'
     attribute
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
         var obj = { "property": "ownDataProperty" };
 
         var desc = Object.getOwnPropertyDescriptor(obj, "property");
 
         var propDefined = ("writable" in desc);
 
-        try {
             delete desc.writable;
             var propDeleted = "writable" in desc;
 
-            return propDefined && !propDeleted;
-        } catch (e) {
-            return false;
-        }
-    }
-runTestCase(testcase);
+assert(propDefined, 'propDefined !== true');
+assert.sameValue(propDeleted, false, 'propDeleted');
diff --git a/test/built-ins/Object/getOwnPropertyDescriptor/15.2.3.3-4-232.js b/test/built-ins/Object/getOwnPropertyDescriptor/15.2.3.3-4-232.js
index 11ba00c9dad5c3d8c1eab79ba46562c9127b2970..43203e281d08ebd25fe2078f90dc0e0b71398591 100644
--- a/test/built-ins/Object/getOwnPropertyDescriptor/15.2.3.3-4-232.js
+++ b/test/built-ins/Object/getOwnPropertyDescriptor/15.2.3.3-4-232.js
@@ -7,19 +7,12 @@ description: >
     Object.getOwnPropertyDescriptor - ensure that 'enumerable'
     property of returned object is data property with correct
     'writable' attribute
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
         var obj = { "property": "ownDataProperty" };
 
         var desc = Object.getOwnPropertyDescriptor(obj, "property");
 
-        try {
             desc.enumerable = "overwriteDataProperty";
-            return desc.enumerable === "overwriteDataProperty";
-        } catch (e) {
-            return false;
-        }
-    }
-runTestCase(testcase);
+
+assert.sameValue(desc.enumerable, "overwriteDataProperty", 'desc.enumerable');
diff --git a/test/built-ins/Object/getOwnPropertyDescriptor/15.2.3.3-4-234.js b/test/built-ins/Object/getOwnPropertyDescriptor/15.2.3.3-4-234.js
index 1152a9b8428036a080efa856230a0d288e63f3b4..d4c6ea9d830bdc50ae0c38e88ebad4b3a7f85ccf 100644
--- a/test/built-ins/Object/getOwnPropertyDescriptor/15.2.3.3-4-234.js
+++ b/test/built-ins/Object/getOwnPropertyDescriptor/15.2.3.3-4-234.js
@@ -7,23 +7,16 @@ description: >
     Object.getOwnPropertyDescriptor - ensure that 'enumerable'
     property of returned object is data property with correct
     'configurable' attribute
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
         var obj = { "property": "ownDataProperty" };
 
         var desc = Object.getOwnPropertyDescriptor(obj, "property");
 
         var propDefined = "enumerable" in desc;
 
-        try {
             delete desc.enumerable;
             var propDeleted = "enumerable" in desc;
 
-            return propDefined && !propDeleted;
-        } catch (e) {
-            return false;
-        }
-    }
-runTestCase(testcase);
+assert(propDefined, 'propDefined !== true');
+assert.sameValue(propDeleted, false, 'propDeleted');
diff --git a/test/built-ins/Object/getOwnPropertyDescriptor/15.2.3.3-4-236.js b/test/built-ins/Object/getOwnPropertyDescriptor/15.2.3.3-4-236.js
index e427e8dc2b0efdda9eeaa7cf206bd274362a1ef2..960fc5cf3468700a9f09e031703da9d699954d1b 100644
--- a/test/built-ins/Object/getOwnPropertyDescriptor/15.2.3.3-4-236.js
+++ b/test/built-ins/Object/getOwnPropertyDescriptor/15.2.3.3-4-236.js
@@ -7,19 +7,12 @@ description: >
     Object.getOwnPropertyDescriptor - ensure that 'configurable'
     property of returned object is data property with correct
     'writable' attribute
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
         var obj = { "property": "ownDataProperty" };
 
         var desc = Object.getOwnPropertyDescriptor(obj, "property");
 
-        try {
             desc.writable = "overwriteDataProperty";
-            return desc.writable === "overwriteDataProperty";
-        } catch (e) {
-            return false;
-        }
-    }
-runTestCase(testcase);
+
+assert.sameValue(desc.writable, "overwriteDataProperty", 'desc.writable');
diff --git a/test/built-ins/Object/getOwnPropertyDescriptor/15.2.3.3-4-238.js b/test/built-ins/Object/getOwnPropertyDescriptor/15.2.3.3-4-238.js
index d60065d40bdd97030a5fc96ddcf59593439d8974..5e877a51dc461860e4ae6d81c5ae865c1b224078 100644
--- a/test/built-ins/Object/getOwnPropertyDescriptor/15.2.3.3-4-238.js
+++ b/test/built-ins/Object/getOwnPropertyDescriptor/15.2.3.3-4-238.js
@@ -7,23 +7,16 @@ description: >
     Object.getOwnPropertyDescriptor - ensure that 'configurable'
     property of returned object is data property with correct
     'configurable' attribute
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
         var obj = { "property": "ownDataProperty" };
 
         var desc = Object.getOwnPropertyDescriptor(obj, "property");
 
         var propDefined = "configurable" in desc;
-        
-        try {
+
             delete desc.configurable;
             var propDeleted = "configurable" in desc;
 
-            return propDefined && !propDeleted;
-        } catch (e) {
-            return false;
-        }
-    }
-runTestCase(testcase);
+assert(propDefined, 'propDefined !== true');
+assert.sameValue(propDeleted, false, 'propDeleted');
diff --git a/test/built-ins/Object/getOwnPropertyDescriptor/15.2.3.3-4-240.js b/test/built-ins/Object/getOwnPropertyDescriptor/15.2.3.3-4-240.js
index 41124f7b2313a0d14b5fb2b44a9a477e224d0eeb..35f469594b333bbef18cbf5abd06554ed8d818c8 100644
--- a/test/built-ins/Object/getOwnPropertyDescriptor/15.2.3.3-4-240.js
+++ b/test/built-ins/Object/getOwnPropertyDescriptor/15.2.3.3-4-240.js
@@ -6,10 +6,8 @@ es5id: 15.2.3.3-4-240
 description: >
     Object.getOwnPropertyDescriptor - ensure that 'get' property of
     returned object is data property with correct 'writable' attribute
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
         var obj = {};
         var fun = function () {
             return "ownGetProperty";
@@ -21,11 +19,6 @@ function testcase() {
 
         var desc = Object.getOwnPropertyDescriptor(obj, "property");
 
-        try {
             desc.get = "overwriteGetProperty";
-            return desc.get === "overwriteGetProperty";
-        } catch (e) {
-            return false;
-        }
-    }
-runTestCase(testcase);
+
+assert.sameValue(desc.get, "overwriteGetProperty", 'desc.get');
diff --git a/test/built-ins/Object/getOwnPropertyDescriptor/15.2.3.3-4-242.js b/test/built-ins/Object/getOwnPropertyDescriptor/15.2.3.3-4-242.js
index 3ec1506288b44233e5334eba87ea399a8ea2c0df..d7800ba62021d9a146ef2c5cccbc6bbfdb2a5dd1 100644
--- a/test/built-ins/Object/getOwnPropertyDescriptor/15.2.3.3-4-242.js
+++ b/test/built-ins/Object/getOwnPropertyDescriptor/15.2.3.3-4-242.js
@@ -7,10 +7,8 @@ description: >
     Object.getOwnPropertyDescriptor - ensure that 'get' property of
     returned object is data property with correct 'configurable'
     attribute
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
         var obj = {};
         var fun = function () {
             return "ownDataProperty";
@@ -24,13 +22,8 @@ function testcase() {
 
         var propDefined = "get" in desc;
 
-        try {
             delete desc.get;
             var propDeleted = "get" in desc;
 
-            return propDefined && !propDeleted;
-        } catch (e) {
-            return false;
-        }
-    }
-runTestCase(testcase);
+assert(propDefined, 'propDefined !== true');
+assert.sameValue(propDeleted, false, 'propDeleted');
diff --git a/test/built-ins/Object/getOwnPropertyDescriptor/15.2.3.3-4-244.js b/test/built-ins/Object/getOwnPropertyDescriptor/15.2.3.3-4-244.js
index 38ff3c445b20424235a935878615d37d067a8dea..1435215972f6b5bb2a3964f2bd1722c0a10ff304 100644
--- a/test/built-ins/Object/getOwnPropertyDescriptor/15.2.3.3-4-244.js
+++ b/test/built-ins/Object/getOwnPropertyDescriptor/15.2.3.3-4-244.js
@@ -6,10 +6,8 @@ es5id: 15.2.3.3-4-244
 description: >
     Object.getOwnPropertyDescriptor - ensure that 'set' property of
     returned object is data property with correct 'writable' attribute
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
         var obj = {};
         var fun = function () {
             return "ownSetProperty";
@@ -21,11 +19,6 @@ function testcase() {
 
         var desc = Object.getOwnPropertyDescriptor(obj, "property");
 
-        try {
             desc.set = "overwriteSetProperty";
-            return desc.set === "overwriteSetProperty";
-        } catch (e) {
-            return false;
-        }
-    }
-runTestCase(testcase);
+
+assert.sameValue(desc.set, "overwriteSetProperty", 'desc.set');
diff --git a/test/built-ins/Object/getOwnPropertyDescriptor/15.2.3.3-4-246.js b/test/built-ins/Object/getOwnPropertyDescriptor/15.2.3.3-4-246.js
index fb0f91a865d75c0ee5286832d49a6923e18dcd7e..210ace76fba99a31921a9e883a27e621f564d11e 100644
--- a/test/built-ins/Object/getOwnPropertyDescriptor/15.2.3.3-4-246.js
+++ b/test/built-ins/Object/getOwnPropertyDescriptor/15.2.3.3-4-246.js
@@ -7,10 +7,8 @@ description: >
     Object.getOwnPropertyDescriptor - ensure that 'set' property of
     returned object is data property with correct 'configurable'
     attribute
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
         var obj = {};
         var fun = function () {
             return "ownSetProperty";
@@ -24,13 +22,8 @@ function testcase() {
 
         var propDefined = "set" in desc;
 
-        try {
             delete desc.set;
             var propDeleted = "set" in desc;
 
-            return propDefined && !propDeleted;
-        } catch (e) {
-            return false;
-        }
-    }
-runTestCase(testcase);
+assert(propDefined, 'propDefined !== true');
+assert.sameValue(propDeleted, false, 'propDeleted');
diff --git a/test/built-ins/Object/getOwnPropertyNames/15.2.3.4-4-1.js b/test/built-ins/Object/getOwnPropertyNames/15.2.3.4-4-1.js
index 5d0dca14cb5502399f6fa11f1c5a9374da88911a..6af3d418eee5b16e45184723fb923df61635b86b 100644
--- a/test/built-ins/Object/getOwnPropertyNames/15.2.3.4-4-1.js
+++ b/test/built-ins/Object/getOwnPropertyNames/15.2.3.4-4-1.js
@@ -4,12 +4,9 @@
 /*---
 es5id: 15.2.3.4-4-1
 description: Object.getOwnPropertyNames returns array of property names (Global)
-includes:
-    - runTestCase.js
-    - fnGlobalObject.js
+includes: [fnGlobalObject.js]
 ---*/
 
-function testcase() {
         var result = Object.getOwnPropertyNames(fnGlobalObject());
         var expResult = ["NaN", "Infinity", "undefined", "eval", "parseInt", "parseFloat", "isNaN", "isFinite", "decodeURI", "decodeURIComponent", "encodeURI", "encodeURIComponent", "Object", "Function", "Array", "String", "Boolean", "Number", "Date", "Date", "RegExp", "Error", "EvalError", "RangeError", "ReferenceError", "SyntaxError", "TypeError", "URIError", "Math", "JSON"];
 
@@ -19,11 +16,5 @@ function testcase() {
         }
 
         for (var p1 in expResult) {
-            if (!result1[expResult[p1]]) {
-                return false;
-            }
+            assert(result1[expResult[p1]], 'result1[expResult[p1]] !== true');
         }
-
-        return true;
-    }
-runTestCase(testcase);
diff --git a/test/built-ins/Object/getOwnPropertyNames/15.2.3.4-4-36.js b/test/built-ins/Object/getOwnPropertyNames/15.2.3.4-4-36.js
index 80a7b1a1036d7a1c733ad597d9a07e2d9d7a617f..8348c8209c58018ae9af5e7f1efa08d20077c630 100644
--- a/test/built-ins/Object/getOwnPropertyNames/15.2.3.4-4-36.js
+++ b/test/built-ins/Object/getOwnPropertyNames/15.2.3.4-4-36.js
@@ -6,11 +6,8 @@ es5id: 15.2.3.4-4-36
 description: >
     Object.getOwnPropertyNames - inherited data properties are not
     pushed into the returned array
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
-
         var proto = { "parent": "parent" };
 
         var Con = function () { };
@@ -21,10 +18,5 @@ function testcase() {
         var result = Object.getOwnPropertyNames(child);
 
         for (var p in result) {
-            if (result[p] === "parent") {
-                return false;
-            }
+            assert.notSameValue(result[p], "parent", 'result[p]');
         }
-        return true;
-    }
-runTestCase(testcase);
diff --git a/test/built-ins/Object/getOwnPropertyNames/15.2.3.4-4-37.js b/test/built-ins/Object/getOwnPropertyNames/15.2.3.4-4-37.js
index 14090af8d4ac6677df97b06463e593eef26d5e2a..7ee68cada55a48ad07a21c75f9f23634e7ae4b7a 100644
--- a/test/built-ins/Object/getOwnPropertyNames/15.2.3.4-4-37.js
+++ b/test/built-ins/Object/getOwnPropertyNames/15.2.3.4-4-37.js
@@ -6,10 +6,8 @@ es5id: 15.2.3.4-4-37
 description: >
     Object.getOwnPropertyNames - inherited accessor properties are not
     pushed into the returned array
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
         var proto = {};
         Object.defineProperty(proto, "parent", {
             get: function () {
@@ -26,10 +24,5 @@ function testcase() {
         var result = Object.getOwnPropertyNames(child);
 
         for (var p in result) {
-            if (result[p] === "parent") {
-                return false;
-            }
+            assert.notSameValue(result[p], "parent", 'result[p]');
         }
-        return true;
-    }
-runTestCase(testcase);
diff --git a/test/built-ins/Object/getOwnPropertyNames/15.2.3.4-4-40.js b/test/built-ins/Object/getOwnPropertyNames/15.2.3.4-4-40.js
index 07650d4da8c66b57400f600deceeafd44ff1b9da..1597725f12f0f8246a6933ad4746f4184f341b70 100644
--- a/test/built-ins/Object/getOwnPropertyNames/15.2.3.4-4-40.js
+++ b/test/built-ins/Object/getOwnPropertyNames/15.2.3.4-4-40.js
@@ -6,11 +6,8 @@ es5id: 15.2.3.4-4-40
 description: >
     Object.getOwnPropertyNames - inherited data property of String
     object 'O' is not pushed into the returned array
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
-        try {
             var str = new String("abc");
 
             String.prototype.protoProperty = "protoString";
@@ -18,14 +15,5 @@ function testcase() {
             var result = Object.getOwnPropertyNames(str);
 
             for (var p in result) {
-                if (result[p] === "protoProperty") {
-                    return false;
-                }
+                assert.notSameValue(result[p], "protoProperty", 'result[p]');
             }
-
-            return true;
-        } finally {
-            delete String.prototype.protoProperty;
-        }
-    }
-runTestCase(testcase);
diff --git a/test/built-ins/Object/getOwnPropertyNames/15.2.3.4-4-41.js b/test/built-ins/Object/getOwnPropertyNames/15.2.3.4-4-41.js
index e4990e311c1d93e4d111e25b52c73d51a804af49..376e30846a7937dc50bc1880ea6043f3e07db7e7 100644
--- a/test/built-ins/Object/getOwnPropertyNames/15.2.3.4-4-41.js
+++ b/test/built-ins/Object/getOwnPropertyNames/15.2.3.4-4-41.js
@@ -6,11 +6,8 @@ es5id: 15.2.3.4-4-41
 description: >
     Object.getOwnPropertyNames - inherited accessor property of String
     object 'O' is not pushed into the returned array
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
-        try {
             var str = new String("abc");
 
             Object.defineProperty(String.prototype, "protoProperty", {
@@ -23,13 +20,5 @@ function testcase() {
             var result = Object.getOwnPropertyNames(str);
 
             for (var p in result) {
-                if (result[p] === "protoProperty") {
-                    return false;
-                }
+                assert.notSameValue(result[p], "protoProperty", 'result[p]');
             }
-            return true;
-        } finally {
-            delete String.prototype.protoProperty;
-        }
-    }
-runTestCase(testcase);
diff --git a/test/built-ins/Object/getOwnPropertyNames/15.2.3.4-4-42.js b/test/built-ins/Object/getOwnPropertyNames/15.2.3.4-4-42.js
index 2e975c3bbe8fe2a628dfbe733bc31d17c73d46f5..4f81f8454d2e54f14c3e3b9be6d73494da768c0b 100644
--- a/test/built-ins/Object/getOwnPropertyNames/15.2.3.4-4-42.js
+++ b/test/built-ins/Object/getOwnPropertyNames/15.2.3.4-4-42.js
@@ -6,10 +6,10 @@ es5id: 15.2.3.4-4-42
 description: >
     Object.getOwnPropertyNames - own data property of String object
     'O' is pushed into the returned array
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
+var propertyFound = false;
+
         var str = new String("abc");
 
         Object.defineProperty(str, "ownProperty", {
@@ -21,10 +21,9 @@ function testcase() {
 
         for (var p in result) {
             if (result[p] === "ownProperty") {
-                return true;
+                propertyFound = true;
+                break;
             }
         }
 
-        return false;
-    }
-runTestCase(testcase);
+assert(propertyFound, 'Property not found');
diff --git a/test/built-ins/Object/getOwnPropertyNames/15.2.3.4-4-43.js b/test/built-ins/Object/getOwnPropertyNames/15.2.3.4-4-43.js
index 4e0b29f67909807c273db83a313f43604ff9924d..b3ae879d9ee5fba89665fe23068232d8e78ae64c 100644
--- a/test/built-ins/Object/getOwnPropertyNames/15.2.3.4-4-43.js
+++ b/test/built-ins/Object/getOwnPropertyNames/15.2.3.4-4-43.js
@@ -6,10 +6,10 @@ es5id: 15.2.3.4-4-43
 description: >
     Object.getOwnPropertyNames - own accessor property of String
     object 'O' is pushed into the returned array
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
+var propertyFound = false;
+
         var str = new String("abc");
 
         Object.defineProperty(str, "ownProperty", {
@@ -23,10 +23,9 @@ function testcase() {
 
         for (var p in result) {
             if (result[p] === "ownProperty") {
-                return true;
+                propertyFound = true;
+                break;
             }
         }
 
-        return false;
-    }
-runTestCase(testcase);
+assert(propertyFound, 'Property not found');
diff --git a/test/built-ins/Object/getOwnPropertyNames/15.2.3.4-4-45.js b/test/built-ins/Object/getOwnPropertyNames/15.2.3.4-4-45.js
index aba29dca272312928ae88d027a304822c9f9c501..5772ef4d0ac86eb263afbb45e65679ca8d9e810b 100644
--- a/test/built-ins/Object/getOwnPropertyNames/15.2.3.4-4-45.js
+++ b/test/built-ins/Object/getOwnPropertyNames/15.2.3.4-4-45.js
@@ -6,11 +6,8 @@ es5id: 15.2.3.4-4-45
 description: >
     Object.getOwnPropertyNames - inherited data property of Array
     object 'O' is not pushed into the returned array.
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
-        try {
             var arr = [0, 1, 2];
 
             Array.prototype.protoProperty = "protoArray";
@@ -18,13 +15,5 @@ function testcase() {
             var result = Object.getOwnPropertyNames(arr);
 
             for (var p in result) {
-                if (result[p] === "protoProperty") {
-                    return false;
-                }
+                assert.notSameValue(result[p], "protoProperty", 'result[p]');
             }
-            return true;
-        } finally {
-            delete Array.prototype.protoProperty;
-        }
-    }
-runTestCase(testcase);
diff --git a/test/built-ins/Object/getOwnPropertyNames/15.2.3.4-4-46.js b/test/built-ins/Object/getOwnPropertyNames/15.2.3.4-4-46.js
index b103c34b784d228576d453ffd97e707910685569..85773d0cdf3951a1ab0eab4157ddce5f93c84102 100644
--- a/test/built-ins/Object/getOwnPropertyNames/15.2.3.4-4-46.js
+++ b/test/built-ins/Object/getOwnPropertyNames/15.2.3.4-4-46.js
@@ -6,11 +6,8 @@ es5id: 15.2.3.4-4-46
 description: >
     Object.getOwnPropertyNames - inherited accessor property of Array
     object 'O' is not pushed into the returned array.
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
-        try {
             var arr = [0, 1, 2];
 
             Object.defineProperty(Array.prototype, "protoProperty", {
@@ -23,13 +20,5 @@ function testcase() {
             var result = Object.getOwnPropertyNames(arr);
 
             for (var p in result) {
-                if (result[p] === "protoProperty") {
-                    return false;
-                }
+                assert.notSameValue(result[p], "protoProperty", 'result[p]');
             }
-            return true;
-        } finally {
-            delete Array.prototype.protoProperty;
-        }
-    }
-runTestCase(testcase);
diff --git a/test/built-ins/Object/getOwnPropertyNames/15.2.3.4-4-47.js b/test/built-ins/Object/getOwnPropertyNames/15.2.3.4-4-47.js
index 4bbba028c1fcdc3162d2fce8a51dde3d196da298..ac4193f20248361a16ef412cebe45f3738861457 100644
--- a/test/built-ins/Object/getOwnPropertyNames/15.2.3.4-4-47.js
+++ b/test/built-ins/Object/getOwnPropertyNames/15.2.3.4-4-47.js
@@ -6,10 +6,10 @@ es5id: 15.2.3.4-4-47
 description: >
     Object.getOwnPropertyNames - own data property of Array object 'O'
     is pushed into the returned array
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
+var propertyFound = false;
+
         var arr = [0, 1, 2];
         arr.ownProperty = "ownArray";
 
@@ -17,10 +17,9 @@ function testcase() {
 
         for (var p in result) {
             if (result[p] === "ownProperty") {
-                return true;
+                propertyFound = true;
+                break;
             }
         }
 
-        return false;
-    }
-runTestCase(testcase);
+assert(propertyFound, 'Property not found');
diff --git a/test/built-ins/Object/getOwnPropertyNames/15.2.3.4-4-48.js b/test/built-ins/Object/getOwnPropertyNames/15.2.3.4-4-48.js
index f09d5b145adff0e0c72d73da7d46ec9996c43036..61299ad6406b20fffa8bdd0abbfde025f41e8da0 100644
--- a/test/built-ins/Object/getOwnPropertyNames/15.2.3.4-4-48.js
+++ b/test/built-ins/Object/getOwnPropertyNames/15.2.3.4-4-48.js
@@ -6,10 +6,10 @@ es5id: 15.2.3.4-4-48
 description: >
     Object.getOwnPropertyNames - own accessor property of Array object
     'O' is pushed into the returned array.
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
+var propertyFound = false;
+
         var arr = [0, 1, 2];
 
         Object.defineProperty(arr, "ownProperty", {
@@ -23,10 +23,9 @@ function testcase() {
 
         for (var p in result) {
             if (result[p] === "ownProperty") {
-                return true;
+                propertyFound = true;
+                break;
             }
         }
 
-        return false;
-    }
-runTestCase(testcase);
+assert(propertyFound, 'Property not found');
diff --git a/test/built-ins/Object/getOwnPropertyNames/15.2.3.4-4-b-3.js b/test/built-ins/Object/getOwnPropertyNames/15.2.3.4-4-b-3.js
index f1c3fb7d3c4a4d25bf5fe84b5b36a4874f8ad0ad..27e4eaaf9cb6b364c4eb377249587412e1156bda 100644
--- a/test/built-ins/Object/getOwnPropertyNames/15.2.3.4-4-b-3.js
+++ b/test/built-ins/Object/getOwnPropertyNames/15.2.3.4-4-b-3.js
@@ -6,20 +6,19 @@ es5id: 15.2.3.4-4-b-3
 description: >
     Object.getOwnPropertyNames - own property named empty('') is
     pushed into the returned array
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
+var propertyFound = false;
+
         var obj = { "": "empty" };
 
         var result = Object.getOwnPropertyNames(obj);
 
         for (var p in result) {
             if (result[p] === "") {
-                return true;
+                propertyFound = true;
+                break;
             }
         }
 
-        return false;
-    }
-runTestCase(testcase);
+assert(propertyFound, 'Property not found');
diff --git a/test/built-ins/Object/getOwnPropertyNames/15.2.3.4-4-b-4.js b/test/built-ins/Object/getOwnPropertyNames/15.2.3.4-4-b-4.js
index 9b826fbda57fc224a2a8c51b7de4937d9bfba075..fdcec33553a8086563b1f07467e74d4666cd5972 100644
--- a/test/built-ins/Object/getOwnPropertyNames/15.2.3.4-4-b-4.js
+++ b/test/built-ins/Object/getOwnPropertyNames/15.2.3.4-4-b-4.js
@@ -6,22 +6,15 @@ es5id: 15.2.3.4-4-b-4
 description: >
     Object.getOwnPropertyNames - elements of the returned array are
     writable
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
         var obj = { "a": "a" };
 
         var result = Object.getOwnPropertyNames(obj);
 
-        try {
             var beforeOverride = (result[0] === "a");
             result[0] = "b";
             var afterOverride = (result[0] === "b");
 
-            return beforeOverride && afterOverride;
-        } catch (ex) {
-            return false;
-        }
-    }
-runTestCase(testcase);
+assert(beforeOverride, 'beforeOverride !== true');
+assert(afterOverride, 'afterOverride !== true');
diff --git a/test/built-ins/Object/getOwnPropertyNames/15.2.3.4-4-b-5.js b/test/built-ins/Object/getOwnPropertyNames/15.2.3.4-4-b-5.js
index 22962ec7483bd1feef2499a5592e94e425223c79..d6c3a2528d9a1d40f82c1eae5bff20e035abeadb 100644
--- a/test/built-ins/Object/getOwnPropertyNames/15.2.3.4-4-b-5.js
+++ b/test/built-ins/Object/getOwnPropertyNames/15.2.3.4-4-b-5.js
@@ -6,20 +6,19 @@ es5id: 15.2.3.4-4-b-5
 description: >
     Object.getOwnPropertyNames - elements of the returned array are
     enumerable
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
+var propertyFound = false;
+
         var obj = { "a": "a" };
 
         var result = Object.getOwnPropertyNames(obj);
 
         for (var p in result) {
             if (result[p] === "a") {
-                return true;
+                propertyFound = true;
+                break;
             }
         }
 
-        return false;
-    }
-runTestCase(testcase);
+assert(propertyFound, 'Property not found');
diff --git a/test/built-ins/Object/keys/15.2.3.14-3-5.js b/test/built-ins/Object/keys/15.2.3.14-3-5.js
index 035dd63c24b8e4d8bfbc520d12540198d45ef7d2..ed4c7b7cb3a492a201a59114fa15ce5067f85ada 100644
--- a/test/built-ins/Object/keys/15.2.3.14-3-5.js
+++ b/test/built-ins/Object/keys/15.2.3.14-3-5.js
@@ -4,15 +4,13 @@
 /*---
 es5id: 15.2.3.14-3-5
 description: Object.keys must return a fresh array on each invocation
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
   var literal = {a: 1};
   var keysBefore = Object.keys(literal);
-  if (keysBefore[0] != 'a') return false;
+  assert.sameValue(keysBefore[0], 'a', 'keysBefore[0]');
   keysBefore[0] = 'x';
   var keysAfter = Object.keys(literal);
-  return (keysBefore[0] == 'x') && (keysAfter[0] == 'a');
- }
-runTestCase(testcase);
+
+assert.sameValue(keysBefore[0], 'x', 'keysBefore[0]');
+assert.sameValue(keysAfter[0], 'a', 'keysAfter[0]');
diff --git a/test/built-ins/Object/keys/15.2.3.14-5-10.js b/test/built-ins/Object/keys/15.2.3.14-5-10.js
index 1464abd16526ebcc982db08c78444c070e3f74d7..7c78da96c76cadf9a21c37d6701cb452f142878c 100644
--- a/test/built-ins/Object/keys/15.2.3.14-5-10.js
+++ b/test/built-ins/Object/keys/15.2.3.14-5-10.js
@@ -7,10 +7,8 @@ description: >
     Object.keys - inherted enumerable accessor property that is
     over-ridden by non-enumerable own accessor property is not defined
     in returned array
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
         var proto = {};
         Object.defineProperty(proto, "prop", {
             get: function () { },
@@ -30,11 +28,5 @@ function testcase() {
         var arr = Object.keys(obj);
 
         for (var p in arr) {
-            if (arr[p] === "prop") {
-                return false;
-            }
+            assert.notSameValue(arr[p], "prop", 'arr[p]');
         }
-
-        return true;
-    }
-runTestCase(testcase);
diff --git a/test/built-ins/Object/keys/15.2.3.14-5-11.js b/test/built-ins/Object/keys/15.2.3.14-5-11.js
index 2b34b9927b584b3071c8f96ad96c83613313953f..3a6c31e0c4e71015d2ed235a72f307c7fa7b2c6d 100644
--- a/test/built-ins/Object/keys/15.2.3.14-5-11.js
+++ b/test/built-ins/Object/keys/15.2.3.14-5-11.js
@@ -6,10 +6,8 @@ es5id: 15.2.3.14-5-11
 description: >
     Object.keys - own enumerable indexed data property of dense array
     'O' is defined in returned array
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
         var obj = [1, 2, 3, 4, 5];
 
         var arr = Object.keys(obj);
@@ -17,13 +15,7 @@ function testcase() {
         var initValue = 0;
         for (var p in arr) {
             if (arr.hasOwnProperty(p)) {
-                if (arr[p] !== initValue.toString()) {
-                    return false;
-                }
+                assert.sameValue(arr[p], initValue.toString(), 'arr[p]');
                 initValue++;
             }
         }
-
-        return true;
-    }
-runTestCase(testcase);
diff --git a/test/built-ins/Object/keys/15.2.3.14-5-12.js b/test/built-ins/Object/keys/15.2.3.14-5-12.js
index b4f7a73ea203f732edd013b3c971efc20846dc69..0e565cc0da63b83e9025d21aa365559755ff6388 100644
--- a/test/built-ins/Object/keys/15.2.3.14-5-12.js
+++ b/test/built-ins/Object/keys/15.2.3.14-5-12.js
@@ -6,10 +6,10 @@ es5id: 15.2.3.14-5-12
 description: >
     Object.keys - own enumerable indexed accessor property of dense
     array 'O' is defined in returned array
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
+var propertyFound = false;
+
         var obj = [2, 3, 4, 5];
 
         Object.defineProperty(obj, "prop", {
@@ -25,11 +25,10 @@ function testcase() {
         for (var p in arr) {
             if (arr.hasOwnProperty(p)) {
                 if (arr[p] === "prop") {
-                    return true;
+                    propertyFound = true;
+                    break;
                 }
             }
         }
 
-        return false;
-    }
-runTestCase(testcase);
+assert(propertyFound, 'Property not found');
diff --git a/test/built-ins/Object/keys/15.2.3.14-5-13.js b/test/built-ins/Object/keys/15.2.3.14-5-13.js
index 61115cfca20b344adc38ca6655fab8de0f46f391..1dd461cabd42c34d2c79b4429abc7724ae856417 100644
--- a/test/built-ins/Object/keys/15.2.3.14-5-13.js
+++ b/test/built-ins/Object/keys/15.2.3.14-5-13.js
@@ -6,10 +6,8 @@ es5id: 15.2.3.14-5-13
 description: >
     Object.keys - own enumerable indexed data property of sparse array
     'O' is defined in returned array
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
         var obj = [1, , 3, , 5];
 
         Object.defineProperty(obj, 5, {
@@ -29,16 +27,9 @@ function testcase() {
         var index;
         var initValue = 0;
         for (index = 0; index < 3; index++) {
-            if (arr[index] !== initValue.toString()) {
-                return false;
-            }
+            assert.sameValue(arr[index], initValue.toString(), 'Unexpected property at index: ' + index);
             initValue += 2;
         }
 
-        if (arr.length !== 4 || arr[3] !== "10000") {
-            return false;
-        }
-
-        return true;
-    }
-runTestCase(testcase);
+assert.sameValue(arr.length, 4, 'arr.length');
+assert.sameValue(arr[3], "10000", 'arr[3]');
diff --git a/test/built-ins/Object/keys/15.2.3.14-5-14.js b/test/built-ins/Object/keys/15.2.3.14-5-14.js
index 9d151e9651f5a6056cd5e9247075d84999578e03..6b9c3ae25259bbcec5cf94b926075cfd93fe9e8d 100644
--- a/test/built-ins/Object/keys/15.2.3.14-5-14.js
+++ b/test/built-ins/Object/keys/15.2.3.14-5-14.js
@@ -6,10 +6,10 @@ es5id: 15.2.3.14-5-14
 description: >
     Object.keys - own enumerable indexed accessor property of sparse
     array 'O' is defined in returned array
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
+var propertyFound = false;
+
         var obj = [1, , 3, , 5];
 
         Object.defineProperty(obj, "10000", {
@@ -24,10 +24,9 @@ function testcase() {
 
         for (var p in arr) {
             if (arr[p] === "10000") {
-                return true;
+                propertyFound = true;
+                break;
             }
         }
 
-        return false;
-    }
-runTestCase(testcase);
+assert(propertyFound, 'Property not found');
diff --git a/test/built-ins/Object/keys/15.2.3.14-5-15.js b/test/built-ins/Object/keys/15.2.3.14-5-15.js
index 963e05313c1e02733172ebdeb636be69dacba581..c7805c0304efb772125f47bf154ddaf361d40d8b 100644
--- a/test/built-ins/Object/keys/15.2.3.14-5-15.js
+++ b/test/built-ins/Object/keys/15.2.3.14-5-15.js
@@ -6,10 +6,8 @@ es5id: 15.2.3.14-5-15
 description: >
     Object.keys - own enumerable indexed data property of String
     object 'O' is defined in returned array
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
         var obj = new String("xyz");
         obj[-20] = -20;
         obj[20] = 20;
@@ -23,11 +21,5 @@ function testcase() {
         var arr = Object.keys(obj);
 
         for (var i = 0; i < arr.length; i++) {
-            if (!obj.hasOwnProperty(arr[i])) {
-                return false;
-            }
+            assert(obj.hasOwnProperty(arr[i]), 'obj.hasOwnProperty(arr[i]) !== true');
         }
-
-        return true;
-    }
-runTestCase(testcase);
diff --git a/test/built-ins/Object/keys/15.2.3.14-5-16.js b/test/built-ins/Object/keys/15.2.3.14-5-16.js
index d165167030d9db32519208d78c284451f90e3aa5..1031fd08c7f4d4ef0dc6030169f4093bd02c363a 100644
--- a/test/built-ins/Object/keys/15.2.3.14-5-16.js
+++ b/test/built-ins/Object/keys/15.2.3.14-5-16.js
@@ -6,10 +6,8 @@ es5id: 15.2.3.14-5-16
 description: >
     Object.keys - own enumerable indexed accessor property of String
     object 'O' is defined in returned array
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
         var obj = new String("xyz");
         obj[-20] = -20;
         obj[20] = 20;
@@ -28,11 +26,5 @@ function testcase() {
         var arr = Object.keys(obj);
 
         for (var i = 0; i < arr.length; i++) {
-            if (!obj.hasOwnProperty(arr[i])) {
-                return false;
-            }
+            assert(obj.hasOwnProperty(arr[i]), 'obj.hasOwnProperty(arr[i]) !== true');
         }
-
-        return true;
-    }
-runTestCase(testcase);
diff --git a/test/built-ins/Object/keys/15.2.3.14-5-3.js b/test/built-ins/Object/keys/15.2.3.14-5-3.js
index 034d6b17102feb18cd8ee99e8681e8f3c2c80963..45d321cfe7684953a4d81cdaf83db7bd092e26d6 100644
--- a/test/built-ins/Object/keys/15.2.3.14-5-3.js
+++ b/test/built-ins/Object/keys/15.2.3.14-5-3.js
@@ -6,10 +6,8 @@ es5id: 15.2.3.14-5-3
 description: >
     Object.keys - non-enumerable own data property of 'O' is not
     defined in returned array
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
         var obj = { prop1: 1001, prop2: 1002 };
 
         Object.defineProperty(obj, "prop3", {
@@ -28,12 +26,6 @@ function testcase() {
 
         for (var p in arr) {
             if (arr.hasOwnProperty(p)) {
-                if (arr[p] === "prop4") {
-                    return false;
-                }
+                assert.notSameValue(arr[p], "prop4", 'arr[p]');
             }
         }
-
-        return true;
-    }
-runTestCase(testcase);
diff --git a/test/built-ins/Object/keys/15.2.3.14-5-4.js b/test/built-ins/Object/keys/15.2.3.14-5-4.js
index 8a81da67b4e8f9d166b150aa583cbacd0eca57b5..ed6346c085e0505733d79eff37ffc67adc3f281a 100644
--- a/test/built-ins/Object/keys/15.2.3.14-5-4.js
+++ b/test/built-ins/Object/keys/15.2.3.14-5-4.js
@@ -6,10 +6,8 @@ es5id: 15.2.3.14-5-4
 description: >
     Object.keys - non-enumerable own accessor property of 'O' is not
     defined in returned array
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
         var obj = {};
 
         Object.defineProperty(obj, "prop1", {
@@ -32,12 +30,6 @@ function testcase() {
 
         for (var p in arr) {
             if (arr.hasOwnProperty(p)) {
-                if (arr[p] === "prop2") {
-                    return false;
-                }
+                assert.notSameValue(arr[p], "prop2", 'arr[p]');
             }
         }
-
-        return true;
-    }
-runTestCase(testcase);
diff --git a/test/built-ins/Object/keys/15.2.3.14-5-5.js b/test/built-ins/Object/keys/15.2.3.14-5-5.js
index 253272d9471d51719a11be9848e3b438c38062b0..996f595a1f34a1e769774bcceb8d2eba92952b49 100644
--- a/test/built-ins/Object/keys/15.2.3.14-5-5.js
+++ b/test/built-ins/Object/keys/15.2.3.14-5-5.js
@@ -6,10 +6,8 @@ es5id: 15.2.3.14-5-5
 description: >
     Object.keys - inherited enumerable data property of 'O' is not
     defined in returned array
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
         var proto = {};
         Object.defineProperty(proto, "inheritedProp", {
             value: 1003,
@@ -25,11 +23,5 @@ function testcase() {
         var arr = Object.keys(obj);
 
         for (var p in arr) {
-            if (arr[p] === "inheritedProp") {
-                return false;
-            }
+            assert.notSameValue(arr[p], "inheritedProp", 'arr[p]');
         }
-
-        return true;
-    }
-runTestCase(testcase);
diff --git a/test/built-ins/Object/keys/15.2.3.14-5-6.js b/test/built-ins/Object/keys/15.2.3.14-5-6.js
index aeee771d6bb0a2982e509e07aab5263459914947..10405513793c164a3149eb6a5ead6c1bac191ce6 100644
--- a/test/built-ins/Object/keys/15.2.3.14-5-6.js
+++ b/test/built-ins/Object/keys/15.2.3.14-5-6.js
@@ -6,10 +6,8 @@ es5id: 15.2.3.14-5-6
 description: >
     Object.keys - inherited enumerable accessor property of 'O' is not
     defined in returned array
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
         var proto = {};
         Object.defineProperty(proto, "inheritedProp", {
             get: function () {
@@ -33,11 +31,5 @@ function testcase() {
         var arr = Object.keys(obj);
 
         for (var p in arr) {
-            if (arr[p] === "inheritedProp") {
-                return false;
-            }
+            assert.notSameValue(arr[p], "inheritedProp", 'arr[p]');
         }
-
-        return true;
-    }
-runTestCase(testcase);
diff --git a/test/built-ins/Object/keys/15.2.3.14-5-7.js b/test/built-ins/Object/keys/15.2.3.14-5-7.js
index c855bf7d90c651d2c4a80f8cc9baf10fee7f14fa..8fb146cd208b85bb2e44246eb7e05498929e8431 100644
--- a/test/built-ins/Object/keys/15.2.3.14-5-7.js
+++ b/test/built-ins/Object/keys/15.2.3.14-5-7.js
@@ -7,10 +7,8 @@ description: >
     Object.keys - inherted enumerable data property that is
     over-ridden by non-enumerable own data property is not defined in
     returned array
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
         var proto = {};
         Object.defineProperty(proto, "prop", {
             value: 1003,
@@ -30,11 +28,5 @@ function testcase() {
         var arr = Object.keys(obj);
 
         for (var p in arr) {
-            if (arr[p] === "prop") {
-                return false;
-            }
+            assert.notSameValue(arr[p], "prop", 'arr[p]');
         }
-
-        return true;
-    }
-runTestCase(testcase);
diff --git a/test/built-ins/Object/keys/15.2.3.14-5-8.js b/test/built-ins/Object/keys/15.2.3.14-5-8.js
index d664f67f814835ca94631a42f164e40b0ad06bd2..37acf9b4f9dbeb3eb865a1fde577a533fc37e592 100644
--- a/test/built-ins/Object/keys/15.2.3.14-5-8.js
+++ b/test/built-ins/Object/keys/15.2.3.14-5-8.js
@@ -7,10 +7,8 @@ description: >
     Object.keys - inherted enumerable data property that is
     over-ridden by non-enumerable own accessor property is not defined
     in returned array
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
         var proto = {};
         Object.defineProperty(proto, "prop", {
             value: 1003,
@@ -30,11 +28,5 @@ function testcase() {
         var arr = Object.keys(obj);
 
         for (var p in arr) {
-            if (arr[p] === "prop") {
-                return false;
-            }
+            assert.notSameValue(arr[p], "prop", 'arr[p]');
         }
-
-        return true;
-    }
-runTestCase(testcase);
diff --git a/test/built-ins/Object/keys/15.2.3.14-5-9.js b/test/built-ins/Object/keys/15.2.3.14-5-9.js
index 00f5ae5145e67ee127bf43116f4d8a08f5ea5670..f88c546c00878699c8ff99b8150ac4be358bf286 100644
--- a/test/built-ins/Object/keys/15.2.3.14-5-9.js
+++ b/test/built-ins/Object/keys/15.2.3.14-5-9.js
@@ -7,10 +7,8 @@ description: >
     Object.keys - inherted enumerable accessor property that is
     over-ridden by non-enumerable own data property is not defined in
     returned array
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
         var proto = {};
         Object.defineProperty(proto, "prop", {
             get: function () { },
@@ -30,11 +28,5 @@ function testcase() {
         var arr = Object.keys(obj);
 
         for (var p in arr) {
-            if (arr[p] === "prop") {
-                return false;
-            }
+            assert.notSameValue(arr[p], "prop", 'arr[p]');
         }
-
-        return true;
-    }
-runTestCase(testcase);
diff --git a/test/built-ins/Object/keys/15.2.3.14-5-a-2.js b/test/built-ins/Object/keys/15.2.3.14-5-a-2.js
index 06dd86fac1b07414fa9df3bfd65e9517f884e295..10f811ac6dc8879c0c32cb168c186319d316defa 100644
--- a/test/built-ins/Object/keys/15.2.3.14-5-a-2.js
+++ b/test/built-ins/Object/keys/15.2.3.14-5-a-2.js
@@ -6,22 +6,16 @@ es5id: 15.2.3.14-5-a-2
 description: >
     Object.keys - 'writable' attribute of element of returned array is
     correct
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
         var obj = { prop1: 100 };
 
         var array = Object.keys(obj);
 
-        try {
             array[0] = "isWritable";
 
             var desc = Object.getOwnPropertyDescriptor(array, "0");
 
-            return array[0] === "isWritable" && desc.hasOwnProperty("writable") && desc.writable === true;
-        } catch (e) {
-            return false;
-        }
-    }
-runTestCase(testcase);
+assert.sameValue(array[0], "isWritable", 'array[0]');
+assert(desc.hasOwnProperty("writable"), 'desc.hasOwnProperty("writable") !== true');
+assert.sameValue(desc.writable, true, 'desc.writable');
diff --git a/test/built-ins/Object/keys/15.2.3.14-5-b-1.js b/test/built-ins/Object/keys/15.2.3.14-5-b-1.js
index 72af838c12ecaeca1e0b914d5a9bb6d470773dc6..6c5766333cc57bb252e7a3d8a8dad3492bd31e95 100644
--- a/test/built-ins/Object/keys/15.2.3.14-5-b-1.js
+++ b/test/built-ins/Object/keys/15.2.3.14-5-b-1.js
@@ -4,10 +4,8 @@
 /*---
 es5id: 15.2.3.14-5-b-1
 description: Object.keys - Verify that 'index' of returned array is ascend by 1
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
         var obj = { prop1: 100, prop2: 200, prop3: 300 };
 
         var array = Object.keys(obj);
@@ -15,13 +13,7 @@ function testcase() {
         var idx = 0;
         for (var index in array) {
             if (array.hasOwnProperty(index)) {
-                if (index !== idx.toString()) {
-                    return false;
-                }
+                assert.sameValue(index, idx.toString(), 'index');
                 idx++;
             }
         }
-
-        return true;
-    }
-runTestCase(testcase);
diff --git a/test/built-ins/Object/keys/15.2.3.14-6-1.js b/test/built-ins/Object/keys/15.2.3.14-6-1.js
index bb9e7da6b9921d214c58f8b7bc85ef33d6078812..884abd796d95e962231737f7b8cf993f1dde0c94 100644
--- a/test/built-ins/Object/keys/15.2.3.14-6-1.js
+++ b/test/built-ins/Object/keys/15.2.3.14-6-1.js
@@ -6,10 +6,8 @@ es5id: 15.2.3.14-6-1
 description: >
     Object.keys - the order of elements in returned array is the same
     with the order of properties in 'O' (dense array)
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
         var denseArray = [1, 2, 3];
 
         var tempArray = [];
@@ -22,11 +20,5 @@ function testcase() {
         var returnedArray = Object.keys(denseArray);
 
         for (var index in returnedArray) {
-            if (tempArray[index] !== returnedArray[index]) {
-                return false;
-            }
+            assert.sameValue(tempArray[index], returnedArray[index], 'tempArray[index]');
         }
-        return true;
-
-    }
-runTestCase(testcase);
diff --git a/test/built-ins/Object/keys/15.2.3.14-6-2.js b/test/built-ins/Object/keys/15.2.3.14-6-2.js
index 4d9d980c6c976250ddcf3c99e1b0428f2c4cd97e..c3a1537e07ffcaa523b02663894206a4d0b52270 100644
--- a/test/built-ins/Object/keys/15.2.3.14-6-2.js
+++ b/test/built-ins/Object/keys/15.2.3.14-6-2.js
@@ -6,10 +6,8 @@ es5id: 15.2.3.14-6-2
 description: >
     Object.keys - the order of elements in returned array is the same
     with the order of properties in 'O' (sparse array)
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
         var sparseArray = [1, 2, , 4, , 6];
 
         var tempArray = [];
@@ -22,10 +20,5 @@ function testcase() {
         var returnedArray = Object.keys(sparseArray);
 
         for (var index in returnedArray) {
-            if (tempArray[index] !== returnedArray[index]) {
-                return false;
-            }
+            assert.sameValue(tempArray[index], returnedArray[index], 'tempArray[index]');
         }
-        return true;
-    }
-runTestCase(testcase);
diff --git a/test/built-ins/Object/keys/15.2.3.14-6-3.js b/test/built-ins/Object/keys/15.2.3.14-6-3.js
index 26ff8a89e0f9e4ebdef35d718cc9e2fda5f6ef8b..108056b3335a7821e2bc968785f1f84e3ec8ca69 100644
--- a/test/built-ins/Object/keys/15.2.3.14-6-3.js
+++ b/test/built-ins/Object/keys/15.2.3.14-6-3.js
@@ -6,10 +6,8 @@ es5id: 15.2.3.14-6-3
 description: >
     Object.keys - the order of elements in returned array is the same
     with the order of properties in 'O' (String object)
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
         var str = new String("abc");
 
         var tempArray = [];
@@ -22,10 +20,5 @@ function testcase() {
         var returnedArray = Object.keys(str);
 
         for (var index in returnedArray) {
-            if (tempArray[index] !== returnedArray[index]) {
-                return false;
-            }
+            assert.sameValue(tempArray[index], returnedArray[index], 'tempArray[index]');
         }
-        return true;
-    }
-runTestCase(testcase);
diff --git a/test/built-ins/Object/keys/15.2.3.14-6-4.js b/test/built-ins/Object/keys/15.2.3.14-6-4.js
index 02cd2f124eec1de4cc7af93f76cdfedeef69d5fb..b10ea76150f38f52c6d7b6796868584a097cbef2 100644
--- a/test/built-ins/Object/keys/15.2.3.14-6-4.js
+++ b/test/built-ins/Object/keys/15.2.3.14-6-4.js
@@ -6,10 +6,8 @@ es5id: 15.2.3.14-6-4
 description: >
     Object.keys - the order of elements in returned array is the same
     with the order of properties in 'O' (Arguments object)
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
         var func = function (a, b, c) {
             return arguments;
         };
@@ -26,10 +24,5 @@ function testcase() {
         var returnedArray = Object.keys(args);
 
         for (var index in returnedArray) {
-            if (tempArray[index] !== returnedArray[index]) {
-                return false;
-            }
+            assert.sameValue(tempArray[index], returnedArray[index], 'tempArray[index]');
         }
-        return true;
-    }
-runTestCase(testcase);
diff --git a/test/built-ins/Object/keys/15.2.3.14-6-5.js b/test/built-ins/Object/keys/15.2.3.14-6-5.js
index 53a1516df39710e2648cb71490295f52f6b0c828..9e5984a78a418e6ebf1caed80df67d62d10cdce1 100644
--- a/test/built-ins/Object/keys/15.2.3.14-6-5.js
+++ b/test/built-ins/Object/keys/15.2.3.14-6-5.js
@@ -6,10 +6,8 @@ es5id: 15.2.3.14-6-5
 description: >
     Object.keys - the order of elements in returned array is the same
     with the order of properties in 'O' (any other built-in object)
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
         var obj = new Date();
         obj.prop1 = 100;
         obj.prop2 = "prop2";
@@ -24,10 +22,5 @@ function testcase() {
         var returnedArray = Object.keys(obj);
 
         for (var index in returnedArray) {
-            if (tempArray[index] !== returnedArray[index]) {
-                return false;
-            }
+            assert.sameValue(tempArray[index], returnedArray[index], 'tempArray[index]');
         }
-        return true;
-    }
-runTestCase(testcase);
diff --git a/test/built-ins/Object/keys/15.2.3.14-6-6.js b/test/built-ins/Object/keys/15.2.3.14-6-6.js
index ba611435834a00242a3babbc771d79c1e3fe5a7f..5322bd3b56d51e47fbfe8aa4ee3f14513bf2d6e8 100644
--- a/test/built-ins/Object/keys/15.2.3.14-6-6.js
+++ b/test/built-ins/Object/keys/15.2.3.14-6-6.js
@@ -6,12 +6,9 @@ es5id: 15.2.3.14-6-6
 description: >
     Object.keys - the order of elements in returned array is the same
     with the order of properties in 'O' (global Object)
-includes:
-    - runTestCase.js
-    - fnGlobalObject.js
+includes: [fnGlobalObject.js]
 ---*/
 
-function testcase() {
         var obj = fnGlobalObject();
 
         var tempArray = [];
@@ -24,10 +21,5 @@ function testcase() {
         var returnedArray = Object.keys(obj);
 
         for (var index in returnedArray) {
-            if (tempArray[index] !== returnedArray[index]) {
-                return false;
-            }
+            assert.sameValue(tempArray[index], returnedArray[index], 'tempArray[index]');
         }
-        return true;
-    }
-runTestCase(testcase);
diff --git a/test/built-ins/undefined/15.1.1.3-1.js b/test/built-ins/undefined/15.1.1.3-1.js
index 586e7b5c9569b87bd60b722918e20c750dcca0ca..8f07eb4e249f84ba5f2f19ef031760ac9651ec83 100644
--- a/test/built-ins/undefined/15.1.1.3-1.js
+++ b/test/built-ins/undefined/15.1.1.3-1.js
@@ -5,17 +5,10 @@
 es5id: 15.1.1.3-1
 description: undefined is not writable, should not throw in non-strict mode
 flags: [noStrict]
-includes: [runTestCase.js]
 ---*/
 
-function testcase(){
-    undefined = 5;
-    if(typeof undefined !== "undefined") return false;
+undefined = 5;
+assert.sameValue(typeof undefined, "undefined", 'typeof undefined');
 
-    var nosuchproperty;
-    if(nosuchproperty !== undefined) return false;
-    
-    return true;
-}
-
-runTestCase(testcase);
+var nosuchproperty;
+assert.sameValue(nosuchproperty, undefined, 'nosuchproperty');