diff --git a/test/built-ins/Array/prototype/reduce/15.4.4.21-0-1.js b/test/built-ins/Array/prototype/reduce/15.4.4.21-0-1.js
index f9ed27c78e97ce38e2a16224245d12806ca80a92..b6a168723e291b0047a036509a48a9f8a67cd78d 100644
--- a/test/built-ins/Array/prototype/reduce/15.4.4.21-0-1.js
+++ b/test/built-ins/Array/prototype/reduce/15.4.4.21-0-1.js
@@ -4,13 +4,8 @@
 /*---
 es5id: 15.4.4.21-0-1
 description: Array.prototype.reduce must exist as a function
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
   var f = Array.prototype.reduce;
-  if (typeof(f) === "function") {
-    return true;
-  }
- }
-runTestCase(testcase);
+
+assert.sameValue(typeof(f), "function", 'typeof(f)');
diff --git a/test/built-ins/Array/prototype/reduce/15.4.4.21-0-2.js b/test/built-ins/Array/prototype/reduce/15.4.4.21-0-2.js
index 5df27324c944ea6e2508cddca90de321c2ba7616..06afb159ddb290db7717b0c2da14d801b26305fe 100644
--- a/test/built-ins/Array/prototype/reduce/15.4.4.21-0-2.js
+++ b/test/built-ins/Array/prototype/reduce/15.4.4.21-0-2.js
@@ -4,12 +4,6 @@
 /*---
 es5id: 15.4.4.21-0-2
 description: Array.prototype.reduce.length must be 1
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
-  if (Array.prototype.reduce.length === 1) {
-    return true;
-  }
- }
-runTestCase(testcase);
+assert.sameValue(Array.prototype.reduce.length, 1, 'Array.prototype.reduce.length');
diff --git a/test/built-ins/Array/prototype/reduce/15.4.4.21-1-11.js b/test/built-ins/Array/prototype/reduce/15.4.4.21-1-11.js
index 47df4a005e84b44f6c2103c4d871ea44d70d3adb..3c7a850ef2e5929844d6ebe739ac1993db98bbc1 100644
--- a/test/built-ins/Array/prototype/reduce/15.4.4.21-1-11.js
+++ b/test/built-ins/Array/prototype/reduce/15.4.4.21-1-11.js
@@ -4,10 +4,8 @@
 /*---
 es5id: 15.4.4.21-1-11
 description: Array.prototype.reduce applied to Date object
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
         function callbackfn(prevVal, curVal, idx, obj) {
             return obj instanceof Date;
         }
@@ -16,6 +14,4 @@ function testcase() {
         obj.length = 1;
         obj[0] = 1;
 
-        return Array.prototype.reduce.call(obj, callbackfn, 1);
-    }
-runTestCase(testcase);
+assert(Array.prototype.reduce.call(obj, callbackfn, 1), 'Array.prototype.reduce.call(obj, callbackfn, 1) !== true');
diff --git a/test/built-ins/Array/prototype/reduce/15.4.4.21-1-12.js b/test/built-ins/Array/prototype/reduce/15.4.4.21-1-12.js
index 6c7e916d64a86a606f75b35bdc6b49b3cad06451..e107e890fdf1b9099cb254b74cae86a565d2cd25 100644
--- a/test/built-ins/Array/prototype/reduce/15.4.4.21-1-12.js
+++ b/test/built-ins/Array/prototype/reduce/15.4.4.21-1-12.js
@@ -4,10 +4,8 @@
 /*---
 es5id: 15.4.4.21-1-12
 description: Array.prototype.reduce applied to RegExp object
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
         function callbackfn(prevVal, curVal, idx, obj) {
             return obj instanceof RegExp;
         }
@@ -16,6 +14,4 @@ function testcase() {
         obj.length = 1;
         obj[0] = 1;
 
-        return Array.prototype.reduce.call(obj, callbackfn, 1);
-    }
-runTestCase(testcase);
+assert(Array.prototype.reduce.call(obj, callbackfn, 1), 'Array.prototype.reduce.call(obj, callbackfn, 1) !== true');
diff --git a/test/built-ins/Array/prototype/reduce/15.4.4.21-1-14.js b/test/built-ins/Array/prototype/reduce/15.4.4.21-1-14.js
index d14c442e2e01c29911585291c449b2cf9ce73447..26d6b9067a9de7a2f933ef0a97ba6646111c8941 100644
--- a/test/built-ins/Array/prototype/reduce/15.4.4.21-1-14.js
+++ b/test/built-ins/Array/prototype/reduce/15.4.4.21-1-14.js
@@ -4,10 +4,8 @@
 /*---
 es5id: 15.4.4.21-1-14
 description: Array.prototype.reduce applied to Error object
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
         function callbackfn(prevVal, curVal, idx, obj) {
             return obj instanceof Error;
         }
@@ -16,6 +14,4 @@ function testcase() {
         obj.length = 1;
         obj[0] = 1;
 
-        return Array.prototype.reduce.call(obj, callbackfn, 1);
-    }
-runTestCase(testcase);
+assert(Array.prototype.reduce.call(obj, callbackfn, 1), 'Array.prototype.reduce.call(obj, callbackfn, 1) !== true');
diff --git a/test/built-ins/Array/prototype/reduce/15.4.4.21-1-15.js b/test/built-ins/Array/prototype/reduce/15.4.4.21-1-15.js
index 726a931c83b3ac5fd4f200ccc34cf7f04809eac8..856b8fc76f0ee8b0c4e01b488070f003d24081e9 100644
--- a/test/built-ins/Array/prototype/reduce/15.4.4.21-1-15.js
+++ b/test/built-ins/Array/prototype/reduce/15.4.4.21-1-15.js
@@ -4,11 +4,8 @@
 /*---
 es5id: 15.4.4.21-1-15
 description: Array.prototype.reduce applied to the Arguments object
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
-
         function callbackfn(prevVal, curVal, idx, obj) {
             return ('[object Arguments]' === Object.prototype.toString.call(obj));
         }
@@ -17,6 +14,4 @@ function testcase() {
             return arguments;
         }("a", "b"));
 
-        return Array.prototype.reduce.call(obj, callbackfn, 1);
-    }
-runTestCase(testcase);
+assert(Array.prototype.reduce.call(obj, callbackfn, 1), 'Array.prototype.reduce.call(obj, callbackfn, 1) !== true');
diff --git a/test/built-ins/Array/prototype/reduce/15.4.4.21-1-4.js b/test/built-ins/Array/prototype/reduce/15.4.4.21-1-4.js
index d09aebad48a75c98e3612a3e0e952459394c1c10..c32bd1624604e2b4507f8a08c88e6cf58d1087e0 100644
--- a/test/built-ins/Array/prototype/reduce/15.4.4.21-1-4.js
+++ b/test/built-ins/Array/prototype/reduce/15.4.4.21-1-4.js
@@ -4,10 +4,8 @@
 /*---
 es5id: 15.4.4.21-1-4
 description: Array.prototype.reduce applied to Boolean object
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
         function callbackfn(prevVal, curVal, idx, obj) {
             return obj instanceof Boolean;
         }
@@ -17,6 +15,4 @@ function testcase() {
         obj[0] = 11;
         obj[1] = 12;
 
-        return Array.prototype.reduce.call(obj, callbackfn, 1);
-    }
-runTestCase(testcase);
+assert(Array.prototype.reduce.call(obj, callbackfn, 1), 'Array.prototype.reduce.call(obj, callbackfn, 1) !== true');
diff --git a/test/built-ins/Array/prototype/reduce/15.4.4.21-1-6.js b/test/built-ins/Array/prototype/reduce/15.4.4.21-1-6.js
index 137efb0b4737c760ac4762a8c3e7ed874c7e52b7..d9a979e1bbfa453aee2bf406d41dfce4c2b60a11 100644
--- a/test/built-ins/Array/prototype/reduce/15.4.4.21-1-6.js
+++ b/test/built-ins/Array/prototype/reduce/15.4.4.21-1-6.js
@@ -4,10 +4,8 @@
 /*---
 es5id: 15.4.4.21-1-6
 description: Array.prototype.reduce applied to Number object
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
         function callbackfn(prevVal, curVal, idx, obj) {
             return obj instanceof Number;
         }
@@ -16,6 +14,5 @@ function testcase() {
         obj.length = 2;
         obj[0] = 11;
         obj[1] = 12;
-        return Array.prototype.reduce.call(obj, callbackfn, 1);
-    }
-runTestCase(testcase);
+
+assert(Array.prototype.reduce.call(obj, callbackfn, 1), 'Array.prototype.reduce.call(obj, callbackfn, 1) !== true');
diff --git a/test/built-ins/Array/prototype/reduce/15.4.4.21-1-7.js b/test/built-ins/Array/prototype/reduce/15.4.4.21-1-7.js
index 9cc9e358430059bb2a2f910c6c01f92902f96479..3f69d45217a698b8a817bbff67259b7e82aef8a2 100644
--- a/test/built-ins/Array/prototype/reduce/15.4.4.21-1-7.js
+++ b/test/built-ins/Array/prototype/reduce/15.4.4.21-1-7.js
@@ -4,15 +4,10 @@
 /*---
 es5id: 15.4.4.21-1-7
 description: Array.prototype.reduce applied to string primitive
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
-
         function callbackfn(prevVal, curVal, idx, obj) {
             return obj instanceof String;
         }
 
-        return Array.prototype.reduce.call("abc", callbackfn, 1);
-    }
-runTestCase(testcase);
+assert(Array.prototype.reduce.call("abc", callbackfn, 1), 'Array.prototype.reduce.call("abc", callbackfn, 1) !== true');
diff --git a/test/built-ins/Array/prototype/reduce/15.4.4.21-1-8.js b/test/built-ins/Array/prototype/reduce/15.4.4.21-1-8.js
index aa6377c36ea764fb610f0f0302436ab8a6822039..714bfbb4de4160e71123ada64b6dabffb1770c81 100644
--- a/test/built-ins/Array/prototype/reduce/15.4.4.21-1-8.js
+++ b/test/built-ins/Array/prototype/reduce/15.4.4.21-1-8.js
@@ -4,17 +4,12 @@
 /*---
 es5id: 15.4.4.21-1-8
 description: Array.prototype.reduce applied to String object
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
-
         function callbackfn(prevVal, curVal, idx, obj) {
             return obj instanceof String;
         }
 
         var obj = new String("abc");
 
-        return  Array.prototype.reduce.call(obj, callbackfn, 1);
-    }
-runTestCase(testcase);
+assert(Array.prototype.reduce.call(obj, callbackfn, 1), 'Array.prototype.reduce.call(obj, callbackfn, 1) !== true');
diff --git a/test/built-ins/Array/prototype/reduce/15.4.4.21-1-9.js b/test/built-ins/Array/prototype/reduce/15.4.4.21-1-9.js
index 9c8cf1dfdbc947de98d59733e897ef202569e884..e6ccb13a7c376079b53de80b8dcfee998db5b913 100644
--- a/test/built-ins/Array/prototype/reduce/15.4.4.21-1-9.js
+++ b/test/built-ins/Array/prototype/reduce/15.4.4.21-1-9.js
@@ -4,10 +4,8 @@
 /*---
 es5id: 15.4.4.21-1-9
 description: Array.prototype.reduce applied to Function object
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
         function callbackfn(prevVal, curVal, idx, obj) {
             return obj instanceof Function;
         }
@@ -18,6 +16,4 @@ function testcase() {
         obj[0] = 11;
         obj[1] = 9;
 
-        return Array.prototype.reduce.call(obj, callbackfn, 1);
-    }
-runTestCase(testcase);
+assert(Array.prototype.reduce.call(obj, callbackfn, 1), 'Array.prototype.reduce.call(obj, callbackfn, 1) !== true');
diff --git a/test/built-ins/Array/prototype/reduce/15.4.4.21-10-1.js b/test/built-ins/Array/prototype/reduce/15.4.4.21-10-1.js
index c0d3668f66994fb8ec78d806c12875619af9a170..3e1de73b4e8761d37d2df0865faed02c7387f40c 100644
--- a/test/built-ins/Array/prototype/reduce/15.4.4.21-10-1.js
+++ b/test/built-ins/Array/prototype/reduce/15.4.4.21-10-1.js
@@ -6,25 +6,17 @@ es5id: 15.4.4.21-10-1
 description: >
     Array.prototype.reduce doesn't mutate the Array on which it is
     called on
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
-
   function callbackfn(prevVal, curVal,  idx, obj)
   {
     return 1;
   }
   var srcArr = [1,2,3,4,5];
   srcArr.reduce(callbackfn);
-  if(srcArr[0] === 1 &&
-     srcArr[1] === 2 &&
-     srcArr[2] === 3 &&
-     srcArr[3] === 4 &&
-     srcArr[4] === 5)
-  {
-    return true;
-  }
 
- }
-runTestCase(testcase);
+assert.sameValue(srcArr[0], 1, 'srcArr[0]');
+assert.sameValue(srcArr[1], 2, 'srcArr[1]');
+assert.sameValue(srcArr[2], 3, 'srcArr[2]');
+assert.sameValue(srcArr[3], 4, 'srcArr[3]');
+assert.sameValue(srcArr[4], 5, 'srcArr[4]');
diff --git a/test/built-ins/Array/prototype/reduce/15.4.4.21-10-2.js b/test/built-ins/Array/prototype/reduce/15.4.4.21-10-2.js
index 81eca4210ab974d4fd0e46c9122759d6d96945ac..8cdc8eebba2b0be50e1444a121e43341e3a36ada 100644
--- a/test/built-ins/Array/prototype/reduce/15.4.4.21-10-2.js
+++ b/test/built-ins/Array/prototype/reduce/15.4.4.21-10-2.js
@@ -6,20 +6,12 @@ es5id: 15.4.4.21-10-2
 description: >
     Array.prototype.reduce reduces the array in ascending order of
     indices
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
-
   function callbackfn(prevVal, curVal,  idx, obj)
   {
     return prevVal + curVal;
   }
   var srcArr = ['1','2','3','4','5'];
-  if(srcArr.reduce(callbackfn) === '12345')
-  {
-    return true;
-  }
 
- }
-runTestCase(testcase);
+assert.sameValue(srcArr.reduce(callbackfn), '12345', 'srcArr.reduce(callbackfn)');
diff --git a/test/built-ins/Array/prototype/reduce/15.4.4.21-10-3.js b/test/built-ins/Array/prototype/reduce/15.4.4.21-10-3.js
index 87784f561d403c8a909d7843df269738c57cd612..ac6b33700d62ba9a242f5683ef9756aedcb113f7 100644
--- a/test/built-ins/Array/prototype/reduce/15.4.4.21-10-3.js
+++ b/test/built-ins/Array/prototype/reduce/15.4.4.21-10-3.js
@@ -4,16 +4,12 @@
 /*---
 es5id: 15.4.4.21-10-3
 description: Array.prototype.reduce - subclassed array of length 1
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
   foo.prototype = [1];
   function foo() {}
   var f = new foo();
   
   function cb(){}
-  if(f.reduce(cb) === 1)
-    return true;
- }
-runTestCase(testcase);
+
+assert.sameValue(f.reduce(cb), 1, 'f.reduce(cb)');
diff --git a/test/built-ins/Array/prototype/reduce/15.4.4.21-10-4.js b/test/built-ins/Array/prototype/reduce/15.4.4.21-10-4.js
index 6b387e091b72d18952de4e7bea4d034378211c34..eb3928eca58d4d7424bc7a0c06a01d179740ed3d 100644
--- a/test/built-ins/Array/prototype/reduce/15.4.4.21-10-4.js
+++ b/test/built-ins/Array/prototype/reduce/15.4.4.21-10-4.js
@@ -4,16 +4,12 @@
 /*---
 es5id: 15.4.4.21-10-4
 description: Array.prototype.reduce - subclassed array with length more than 1
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
   foo.prototype = new Array(1, 2, 3, 4);
   function foo() {}
   var f = new foo();
   
   function cb(prevVal, curVal, idx, obj){return prevVal + curVal;}
-  if(f.reduce(cb) === 10)
-    return true;
- }
-runTestCase(testcase);
+
+assert.sameValue(f.reduce(cb), 10, 'f.reduce(cb)');
diff --git a/test/built-ins/Array/prototype/reduce/15.4.4.21-10-5.js b/test/built-ins/Array/prototype/reduce/15.4.4.21-10-5.js
index 2cbe4bb8de6c87668a9552339c30429c145c6cb7..a406a1ed837c39290b2264893bdfac0139427e85 100644
--- a/test/built-ins/Array/prototype/reduce/15.4.4.21-10-5.js
+++ b/test/built-ins/Array/prototype/reduce/15.4.4.21-10-5.js
@@ -6,20 +6,12 @@ es5id: 15.4.4.21-10-5
 description: >
     Array.prototype.reduce reduces the array in ascending order of
     indices(initialvalue present)
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
-
   function callbackfn(prevVal, curVal,  idx, obj)
   {
     return prevVal + curVal;
   }
   var srcArr = ['1','2','3','4','5'];
-  if(srcArr.reduce(callbackfn,'0') === '012345')
-  {
-    return true;
-  }
 
- }
-runTestCase(testcase);
+assert.sameValue(srcArr.reduce(callbackfn,'0'), '012345', 'srcArr.reduce(callbackfn,"0")');
diff --git a/test/built-ins/Array/prototype/reduce/15.4.4.21-10-6.js b/test/built-ins/Array/prototype/reduce/15.4.4.21-10-6.js
index e53b35ca068757ff1c8442939206b5f3e4f6f1c3..1678a863140796835d2019ca37e4e2f08d513cf9 100644
--- a/test/built-ins/Array/prototype/reduce/15.4.4.21-10-6.js
+++ b/test/built-ins/Array/prototype/reduce/15.4.4.21-10-6.js
@@ -6,16 +6,12 @@ es5id: 15.4.4.21-10-6
 description: >
     Array.prototype.reduce - subclassed array when initialvalue
     provided
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
   foo.prototype = [1,2,3,4];
   function foo() {}
   var f = new foo();
   
   function cb(prevVal, curVal, idx, obj){return prevVal + curVal;}
-  if(f.reduce(cb,-1) === 9)
-    return true;
- }
-runTestCase(testcase);
+
+assert.sameValue(f.reduce(cb,-1), 9, 'f.reduce(cb,-1)');
diff --git a/test/built-ins/Array/prototype/reduce/15.4.4.21-10-7.js b/test/built-ins/Array/prototype/reduce/15.4.4.21-10-7.js
index dcbe93842cb35311c1a7a54f102faa0590b62cd5..bb6165189376cbf86b54fa4e1755bda627fa017c 100644
--- a/test/built-ins/Array/prototype/reduce/15.4.4.21-10-7.js
+++ b/test/built-ins/Array/prototype/reduce/15.4.4.21-10-7.js
@@ -6,16 +6,12 @@ es5id: 15.4.4.21-10-7
 description: >
     Array.prototype.reduce - subclassed array with length 1 and
     initialvalue provided
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
   foo.prototype = [1];
   function foo() {}
   var f = new foo();
   
   function cb(prevVal, curVal, idx, obj){return prevVal + curVal;}
-  if(f.reduce(cb,-1) === 0)
-    return true;
- }
-runTestCase(testcase);
+
+assert.sameValue(f.reduce(cb,-1), 0, 'f.reduce(cb,-1)');
diff --git a/test/built-ins/Array/prototype/reduce/15.4.4.21-10-8.js b/test/built-ins/Array/prototype/reduce/15.4.4.21-10-8.js
index 86aa67a1b94c680de2e71fc1ec86b4c7bc845400..754e312902385f5d7a080b5231f34c5df151dc75 100644
--- a/test/built-ins/Array/prototype/reduce/15.4.4.21-10-8.js
+++ b/test/built-ins/Array/prototype/reduce/15.4.4.21-10-8.js
@@ -4,11 +4,8 @@
 /*---
 es5id: 15.4.4.21-10-8
 description: Array.prototype.reduce doesn't visit expandos
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
-
   var callCnt = 0;
   function callbackfn(prevVal, curVal,  idx, obj)
   {
@@ -20,10 +17,4 @@ function testcase() {
   srcArr[true] = 11;
   srcArr.reduce(callbackfn);
 
-  if(callCnt == 4)
-  {
-    return true;
-  }
-
- }
-runTestCase(testcase);
+assert.sameValue(callCnt, 4, 'callCnt');
diff --git a/test/built-ins/Array/prototype/reduce/15.4.4.21-2-1.js b/test/built-ins/Array/prototype/reduce/15.4.4.21-2-1.js
index 88296c03e43685f387b37fcd19c6ea504b0a82ba..7653134cb54a8f76e49ac4f2fb3d7dae0c74ad9a 100644
--- a/test/built-ins/Array/prototype/reduce/15.4.4.21-2-1.js
+++ b/test/built-ins/Array/prototype/reduce/15.4.4.21-2-1.js
@@ -6,11 +6,8 @@ es5id: 15.4.4.21-2-1
 description: >
     Array.prototype.reduce - 'length' is own data property on an
     Array-like object
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
-
         function callbackfn(prevVal, curVal, idx, obj) {
             return (obj.length === 2);
         }
@@ -22,6 +19,4 @@ function testcase() {
             length: 2
         };
 
-        return Array.prototype.reduce.call(obj, callbackfn, 1) === true;
-    }
-runTestCase(testcase);
+assert.sameValue(Array.prototype.reduce.call(obj, callbackfn, 1), true, 'Array.prototype.reduce.call(obj, callbackfn, 1)');
diff --git a/test/built-ins/Array/prototype/reduce/15.4.4.21-2-10.js b/test/built-ins/Array/prototype/reduce/15.4.4.21-2-10.js
index f9d57dd589c4e44d0ecd842a81f96afa3b3109f1..ab09f8ea17451ee875314a0c2a6109e9729d177e 100644
--- a/test/built-ins/Array/prototype/reduce/15.4.4.21-2-10.js
+++ b/test/built-ins/Array/prototype/reduce/15.4.4.21-2-10.js
@@ -6,11 +6,8 @@ es5id: 15.4.4.21-2-10
 description: >
     Array.prototype.reduce applied to Array-like object, 'length' is
     an inherited accessor property
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
-
         function callbackfn(prevVal, curVal, idx, obj) {
             return (obj.length === 2);
         }
@@ -32,6 +29,4 @@ function testcase() {
         child[1] = 11;
         child[2] = 9;
 
-        return Array.prototype.reduce.call(child, callbackfn, 1) === true;
-    }
-runTestCase(testcase);
+assert.sameValue(Array.prototype.reduce.call(child, callbackfn, 1), true, 'Array.prototype.reduce.call(child, callbackfn, 1)');
diff --git a/test/built-ins/Array/prototype/reduce/15.4.4.21-2-11.js b/test/built-ins/Array/prototype/reduce/15.4.4.21-2-11.js
index c5aaaa67a66fa2df55865aa4e5844f0533688921..40657d6c1b5cb8f1e592285a94f186903b806d77 100644
--- a/test/built-ins/Array/prototype/reduce/15.4.4.21-2-11.js
+++ b/test/built-ins/Array/prototype/reduce/15.4.4.21-2-11.js
@@ -6,11 +6,8 @@ es5id: 15.4.4.21-2-11
 description: >
     Array.prototype.reduce applied to Array-like object, 'length' is
     an own accessor property without a get function
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
-
         var accessed = false;
         function callbackfn(prevVal, curVal, idx, obj) {
             accessed = true;
@@ -25,6 +22,5 @@ function testcase() {
             configurable: true
         });
 
-        return Array.prototype.reduce.call(obj, callbackfn, 1) === 1 && !accessed;
-    }
-runTestCase(testcase);
+assert.sameValue(Array.prototype.reduce.call(obj, callbackfn, 1), 1, 'Array.prototype.reduce.call(obj, callbackfn, 1)');
+assert.sameValue(accessed, false, 'accessed');
diff --git a/test/built-ins/Array/prototype/reduce/15.4.4.21-2-13.js b/test/built-ins/Array/prototype/reduce/15.4.4.21-2-13.js
index 919647eda73d4319438cbc8dda1a901d6d936f0c..7697a8bcdb75ba7be5e981c7a6f59c3019279a89 100644
--- a/test/built-ins/Array/prototype/reduce/15.4.4.21-2-13.js
+++ b/test/built-ins/Array/prototype/reduce/15.4.4.21-2-13.js
@@ -6,11 +6,8 @@ es5id: 15.4.4.21-2-13
 description: >
     Array.prototype.reduce applied to Array-like object that 'length'
     is inherited accessor property without a get function
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
-
         var accessed = false;
 
         function callbackfn(prevVal, curVal, idx, obj) {
@@ -30,6 +27,5 @@ function testcase() {
         child[0] = 11;
         child[1] = 12;
 
-        return Array.prototype.reduce.call(child, callbackfn, 1) === 1 && !accessed;
-    }
-runTestCase(testcase);
+assert.sameValue(Array.prototype.reduce.call(child, callbackfn, 1), 1, 'Array.prototype.reduce.call(child, callbackfn, 1)');
+assert.sameValue(accessed, false, 'accessed');
diff --git a/test/built-ins/Array/prototype/reduce/15.4.4.21-2-14.js b/test/built-ins/Array/prototype/reduce/15.4.4.21-2-14.js
index 616d481ec4d6e62c06809701ae95c4f1836a169e..c82e171030a131af6036d850a81fd99ce6a46947 100644
--- a/test/built-ins/Array/prototype/reduce/15.4.4.21-2-14.js
+++ b/test/built-ins/Array/prototype/reduce/15.4.4.21-2-14.js
@@ -6,11 +6,8 @@ es5id: 15.4.4.21-2-14
 description: >
     Array.prototype.reduce applied to the Array-like object that
     'length' property doesn't exist
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
-
         var accessed = false;
 
         function callbackfn(prevVal, curVal, idx, obj) {
@@ -19,7 +16,5 @@ function testcase() {
 
         var obj = { 0: 11, 1: 12 };
 
-        return Array.prototype.reduce.call(obj, callbackfn, 1) === 1 && !accessed;
-
-    }
-runTestCase(testcase);
+assert.sameValue(Array.prototype.reduce.call(obj, callbackfn, 1), 1, 'Array.prototype.reduce.call(obj, callbackfn, 1)');
+assert.sameValue(accessed, false, 'accessed');
diff --git a/test/built-ins/Array/prototype/reduce/15.4.4.21-2-17.js b/test/built-ins/Array/prototype/reduce/15.4.4.21-2-17.js
index f0b58b0657e3ce2f8c03e6512fa626c063f7b815..841c3266ecf1adff46474b2a53be3bf7dec85c68 100644
--- a/test/built-ins/Array/prototype/reduce/15.4.4.21-2-17.js
+++ b/test/built-ins/Array/prototype/reduce/15.4.4.21-2-17.js
@@ -6,11 +6,8 @@ es5id: 15.4.4.21-2-17
 description: >
     Array.prototype.reduce applied to the Arguments object, which
     implements its own property get method
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
-
         function callbackfn(prevVal, curVal, idx, obj) {
             return (obj.length === 2);
         }
@@ -20,6 +17,4 @@ function testcase() {
             return Array.prototype.reduce.call(arguments, callbackfn, 1);
         };
 
-        return func(12, 11) === true;
-    }
-runTestCase(testcase);
+assert.sameValue(func(12, 11), true, 'func(12, 11)');
diff --git a/test/built-ins/Array/prototype/reduce/15.4.4.21-2-18.js b/test/built-ins/Array/prototype/reduce/15.4.4.21-2-18.js
index 39c7fb90f9173f08fb230dfe166473a6334d1173..9f72d44be3585a16e311d8475dce3eb392a43d65 100644
--- a/test/built-ins/Array/prototype/reduce/15.4.4.21-2-18.js
+++ b/test/built-ins/Array/prototype/reduce/15.4.4.21-2-18.js
@@ -6,17 +6,12 @@ es5id: 15.4.4.21-2-18
 description: >
     Array.prototype.reduce applied to String object, which implements
     its own property get method
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
-
         function callbackfn(prevVal, curVal, idx, obj) {
             return (obj.length === 3);
         }
 
         var str = new String("012");
 
-        return Array.prototype.reduce.call(str, callbackfn, 1) === true;
-    }
-runTestCase(testcase);
+assert.sameValue(Array.prototype.reduce.call(str, callbackfn, 1), true, 'Array.prototype.reduce.call(str, callbackfn, 1)');
diff --git a/test/built-ins/Array/prototype/reduce/15.4.4.21-2-19.js b/test/built-ins/Array/prototype/reduce/15.4.4.21-2-19.js
index b5a6fc10419a4c1099e5561cae3e8da6ce6ae6c9..2affbf2667b5e7ad3b55864fc26ec1c3f2337e00 100644
--- a/test/built-ins/Array/prototype/reduce/15.4.4.21-2-19.js
+++ b/test/built-ins/Array/prototype/reduce/15.4.4.21-2-19.js
@@ -6,11 +6,8 @@ es5id: 15.4.4.21-2-19
 description: >
     Array.prototype.reduce applied to Function object, which
     implements its own property get method
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
-
         function callbackfn(prevVal, curVal, idx, obj) {
             return (obj.length === 2);
         }
@@ -22,6 +19,4 @@ function testcase() {
         fun[1] = 11;
         fun[2] = 9;
 
-        return Array.prototype.reduce.call(fun, callbackfn, 1) === true;
-    }
-runTestCase(testcase);
+assert.sameValue(Array.prototype.reduce.call(fun, callbackfn, 1), true, 'Array.prototype.reduce.call(fun, callbackfn, 1)');
diff --git a/test/built-ins/Array/prototype/reduce/15.4.4.21-2-2.js b/test/built-ins/Array/prototype/reduce/15.4.4.21-2-2.js
index d5b04de32abc670b3c1b59c972321bde066fb078..dfd1d93fea032418f611f9d74597043657148d2b 100644
--- a/test/built-ins/Array/prototype/reduce/15.4.4.21-2-2.js
+++ b/test/built-ins/Array/prototype/reduce/15.4.4.21-2-2.js
@@ -4,15 +4,10 @@
 /*---
 es5id: 15.4.4.21-2-2
 description: Array.prototype.reduce - 'length' is own data property on an Array
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
-
         function callbackfn(prevVal, curVal, idx, obj) {
             return (obj.length === 2);
         }
 
-        return [12, 11].reduce(callbackfn, 1) === true;
-    }
-runTestCase(testcase);
+assert.sameValue([12, 11].reduce(callbackfn, 1), true, '[12, 11].reduce(callbackfn, 1)');
diff --git a/test/built-ins/Array/prototype/reduce/15.4.4.21-2-3.js b/test/built-ins/Array/prototype/reduce/15.4.4.21-2-3.js
index 6a3a47cdd3f78bbccf52270ad210f0a4c7e70618..fb9124117c8f4cced662ab9f438b227a309c9c4b 100644
--- a/test/built-ins/Array/prototype/reduce/15.4.4.21-2-3.js
+++ b/test/built-ins/Array/prototype/reduce/15.4.4.21-2-3.js
@@ -6,11 +6,8 @@ es5id: 15.4.4.21-2-3
 description: >
     Array.prototype.reduce - 'length' is an own data property that
     overrides an inherited data property on an Array-like object
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
-
         function callbackfn(prevVal, curVal, idx, obj) {
             return (obj.length === 2);
         }
@@ -26,6 +23,4 @@ function testcase() {
         child[1] = 11;
         child[2] = 9;
 
-        return Array.prototype.reduce.call(child, callbackfn, 1) === true;
-    }
-runTestCase(testcase);
+assert.sameValue(Array.prototype.reduce.call(child, callbackfn, 1), true, 'Array.prototype.reduce.call(child, callbackfn, 1)');
diff --git a/test/built-ins/Array/prototype/reduce/15.4.4.21-2-5.js b/test/built-ins/Array/prototype/reduce/15.4.4.21-2-5.js
index c9cd2af88b77529ad889cfbb5f1c2a66359a9216..7d5b5c4b9522a5908225bf043a945542892297c2 100644
--- a/test/built-ins/Array/prototype/reduce/15.4.4.21-2-5.js
+++ b/test/built-ins/Array/prototype/reduce/15.4.4.21-2-5.js
@@ -6,11 +6,8 @@ es5id: 15.4.4.21-2-5
 description: >
     Array.prototype.reduce applied to Array-like object, 'length' is
     an own data property that overrides an inherited accessor property
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
-
         function callbackfn(prevVal, curVal, idx, obj) {
             return (obj.length === 2);
         }
@@ -36,6 +33,4 @@ function testcase() {
         child[1] = 11;
         child[2] = 9;
 
-        return Array.prototype.reduce.call(child, callbackfn, 1) === true;
-    }
-runTestCase(testcase);
+assert.sameValue(Array.prototype.reduce.call(child, callbackfn, 1), true, 'Array.prototype.reduce.call(child, callbackfn, 1)');
diff --git a/test/built-ins/Array/prototype/reduce/15.4.4.21-2-6.js b/test/built-ins/Array/prototype/reduce/15.4.4.21-2-6.js
index a78487cff7f7f52faf7bcb570bf550d4e5d62bec..03acf1257c770f63067f6482690aafaee4c00ee5 100644
--- a/test/built-ins/Array/prototype/reduce/15.4.4.21-2-6.js
+++ b/test/built-ins/Array/prototype/reduce/15.4.4.21-2-6.js
@@ -6,11 +6,8 @@ es5id: 15.4.4.21-2-6
 description: >
     Array.prototype.reduce applied to Array-like object, 'length' is
     an inherited data property
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
-
         function callbackfn(prevVal, curVal, idx, obj) {
             return (obj.length === 2);
         }
@@ -25,6 +22,4 @@ function testcase() {
         child[1] = 11;
         child[2] = 9;
 
-        return Array.prototype.reduce.call(child, callbackfn, 1) === true;
-    }
-runTestCase(testcase);
+assert.sameValue(Array.prototype.reduce.call(child, callbackfn, 1), true, 'Array.prototype.reduce.call(child, callbackfn, 1)');
diff --git a/test/built-ins/Array/prototype/reduce/15.4.4.21-2-7.js b/test/built-ins/Array/prototype/reduce/15.4.4.21-2-7.js
index adbabf8ce1ef141e2ab29cbd014a58463cd77e45..041084fc9ab76576bef2c4f156ee3e2e4ad2f71d 100644
--- a/test/built-ins/Array/prototype/reduce/15.4.4.21-2-7.js
+++ b/test/built-ins/Array/prototype/reduce/15.4.4.21-2-7.js
@@ -6,11 +6,8 @@ es5id: 15.4.4.21-2-7
 description: >
     Array.prototype.reduce applied to Array-like object, 'length' is
     an own accessor property
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
-
         function callbackfn(prevVal, curVal, idx, obj) {
             return (obj.length === 2);
         }
@@ -28,6 +25,4 @@ function testcase() {
         obj[1] = 11;
         obj[2] = 9;
 
-        return Array.prototype.reduce.call(obj, callbackfn, 1) === true;
-    }
-runTestCase(testcase);
+assert.sameValue(Array.prototype.reduce.call(obj, callbackfn, 1), true, 'Array.prototype.reduce.call(obj, callbackfn, 1)');
diff --git a/test/built-ins/Array/prototype/reduce/15.4.4.21-2-8.js b/test/built-ins/Array/prototype/reduce/15.4.4.21-2-8.js
index 099169a679d65e4f81d8c6884610e822149b7c17..fc1b7ddcccc02efa7e171e703ac0c204500a3d8d 100644
--- a/test/built-ins/Array/prototype/reduce/15.4.4.21-2-8.js
+++ b/test/built-ins/Array/prototype/reduce/15.4.4.21-2-8.js
@@ -6,11 +6,8 @@ es5id: 15.4.4.21-2-8
 description: >
     Array.prototype.reduce applied to Array-like object, 'length' is
     an own accessor property that overrides an inherited data property
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
-
         function callbackfn(prevVal, curVal, idx, obj) {
             return (obj.length === 2);
         }
@@ -33,6 +30,4 @@ function testcase() {
         child[1] = 11;
         child[2] = 9;
 
-        return Array.prototype.reduce.call(child, callbackfn, 1) === true;
-    }
-runTestCase(testcase);
+assert.sameValue(Array.prototype.reduce.call(child, callbackfn, 1), true, 'Array.prototype.reduce.call(child, callbackfn, 1)');
diff --git a/test/built-ins/Array/prototype/reduce/15.4.4.21-2-9.js b/test/built-ins/Array/prototype/reduce/15.4.4.21-2-9.js
index 3573898f333c009d7cd3e8f634bc006a8f8cb0e6..bb13c5fdcc08a89627920559b277ff2d6e4d7196 100644
--- a/test/built-ins/Array/prototype/reduce/15.4.4.21-2-9.js
+++ b/test/built-ins/Array/prototype/reduce/15.4.4.21-2-9.js
@@ -7,11 +7,8 @@ description: >
     Array.prototype.reduce applied to Array-like object, 'length' is
     an own accessor property that overrides an inherited accessor
     property
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
-
         function callbackfn(prevVal, curVal, idx, obj) {
             return (obj.length === 2);
         }
@@ -41,6 +38,4 @@ function testcase() {
         child[1] = 11;
         child[2] = 9;
 
-        return Array.prototype.reduce.call(child, callbackfn, 1) === true;
-    }
-runTestCase(testcase);
+assert.sameValue(Array.prototype.reduce.call(child, callbackfn, 1), true, 'Array.prototype.reduce.call(child, callbackfn, 1)');
diff --git a/test/built-ins/Array/prototype/reduce/15.4.4.21-3-1.js b/test/built-ins/Array/prototype/reduce/15.4.4.21-3-1.js
index 65889e73051566e10d26713099665271e44d975c..37934077df8f52454d890b33becfdcad3313cad6 100644
--- a/test/built-ins/Array/prototype/reduce/15.4.4.21-3-1.js
+++ b/test/built-ins/Array/prototype/reduce/15.4.4.21-3-1.js
@@ -4,11 +4,8 @@
 /*---
 es5id: 15.4.4.21-3-1
 description: Array.prototype.reduce - value of 'length' is undefined
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
-
         var accessed = false;
 
         function callbackfn(prevVal, curVal, idx, obj) {
@@ -18,6 +15,5 @@ function testcase() {
 
         var obj = { 0: 0, 1: 1, length: undefined };
 
-        return Array.prototype.reduce.call(obj, callbackfn, 1) === 1 && !accessed;
-    }
-runTestCase(testcase);
+assert.sameValue(Array.prototype.reduce.call(obj, callbackfn, 1), 1, 'Array.prototype.reduce.call(obj, callbackfn, 1)');
+assert.sameValue(accessed, false, 'accessed');
diff --git a/test/built-ins/Array/prototype/reduce/15.4.4.21-3-10.js b/test/built-ins/Array/prototype/reduce/15.4.4.21-3-10.js
index 8343d81ee95b5e52b29cf00d105b78fb33505f4e..a3f6cea74a405f459920bd54fb78fa99065b59ad 100644
--- a/test/built-ins/Array/prototype/reduce/15.4.4.21-3-10.js
+++ b/test/built-ins/Array/prototype/reduce/15.4.4.21-3-10.js
@@ -6,11 +6,8 @@ es5id: 15.4.4.21-3-10
 description: >
     Array.prototype.reduce - value of 'length' is number primitive
     (value is NaN)
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
-
         var accessed = false;
 
         function callbackfn(prevVal, curVal, idx, obj) {
@@ -20,6 +17,5 @@ function testcase() {
 
         var obj = { 0: 9, length: NaN };
 
-        return Array.prototype.reduce.call(obj, callbackfn, 1) === 1 && !accessed;
-    }
-runTestCase(testcase);
+assert.sameValue(Array.prototype.reduce.call(obj, callbackfn, 1), 1, 'Array.prototype.reduce.call(obj, callbackfn, 1)');
+assert.sameValue(accessed, false, 'accessed');
diff --git a/test/built-ins/Array/prototype/reduce/15.4.4.21-3-11.js b/test/built-ins/Array/prototype/reduce/15.4.4.21-3-11.js
index d4ad07c5f71e3364540c090a6608c643b8ded753..31c311af832fbffc2ac2158810054df23b39cfc4 100644
--- a/test/built-ins/Array/prototype/reduce/15.4.4.21-3-11.js
+++ b/test/built-ins/Array/prototype/reduce/15.4.4.21-3-11.js
@@ -6,17 +6,12 @@ es5id: 15.4.4.21-3-11
 description: >
     Array.prototype.reduce - 'length' is a string containing a
     positive number
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
-
         function callbackfn(prevVal, curVal, idx, obj) {
             return (curVal === 11 && idx === 1);
         }
 
         var obj = { 1: 11, 2: 9, length: "2" };
 
-        return Array.prototype.reduce.call(obj, callbackfn, 1) === true;
-    }
-runTestCase(testcase);
+assert.sameValue(Array.prototype.reduce.call(obj, callbackfn, 1), true, 'Array.prototype.reduce.call(obj, callbackfn, 1)');
diff --git a/test/built-ins/Array/prototype/reduce/15.4.4.21-3-12.js b/test/built-ins/Array/prototype/reduce/15.4.4.21-3-12.js
index 2365eb653ac507ee938ca570eb1257be56a7ebb3..1707e5d421471e694f91f0672f85f0baca10167d 100644
--- a/test/built-ins/Array/prototype/reduce/15.4.4.21-3-12.js
+++ b/test/built-ins/Array/prototype/reduce/15.4.4.21-3-12.js
@@ -6,17 +6,12 @@ es5id: 15.4.4.21-3-12
 description: >
     Array.prototype.reduce - 'length' is a string containing a
     negative number
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
-
         function callbackfn(prevVal, curVal, idx, obj) {
             return (curVal === 11 && idx === 1);
         }
 
         var obj = { 1: 11, 2: 9, length: "-4294967294" };
 
-        return Array.prototype.reduce.call(obj, callbackfn, 1) === 1;
-    }
-runTestCase(testcase);
+assert.sameValue(Array.prototype.reduce.call(obj, callbackfn, 1), 1, 'Array.prototype.reduce.call(obj, callbackfn, 1)');
diff --git a/test/built-ins/Array/prototype/reduce/15.4.4.21-3-13.js b/test/built-ins/Array/prototype/reduce/15.4.4.21-3-13.js
index 8a8e950a3bfe463ef6f4adba5ab343cf0bb9f1b8..cc310f68ef2585e0179e0e906e5a20fec5de7987 100644
--- a/test/built-ins/Array/prototype/reduce/15.4.4.21-3-13.js
+++ b/test/built-ins/Array/prototype/reduce/15.4.4.21-3-13.js
@@ -6,17 +6,12 @@ es5id: 15.4.4.21-3-13
 description: >
     Array.prototype.reduce - 'length' is a string containing a decimal
     number
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
-
         function callbackfn(prevVal, curVal, idx, obj) {
             return (curVal === 11 && idx === 1);
         }
 
         var obj = { 1: 11, 2: 9, length: "2.5" };
 
-        return Array.prototype.reduce.call(obj, callbackfn, 1) === true;
-    }
-runTestCase(testcase);
+assert.sameValue(Array.prototype.reduce.call(obj, callbackfn, 1), true, 'Array.prototype.reduce.call(obj, callbackfn, 1)');
diff --git a/test/built-ins/Array/prototype/reduce/15.4.4.21-3-14.js b/test/built-ins/Array/prototype/reduce/15.4.4.21-3-14.js
index 424041eca335aa4b9e0fbcfa73faa24689662406..2780fc4eebcd80ab24261fa797001f76e232fa46 100644
--- a/test/built-ins/Array/prototype/reduce/15.4.4.21-3-14.js
+++ b/test/built-ins/Array/prototype/reduce/15.4.4.21-3-14.js
@@ -4,11 +4,8 @@
 /*---
 es5id: 15.4.4.21-3-14
 description: Array.prototype.reduce - 'length' is a string containing -Infinity
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
-
         var accessed2 = false;
 
         function callbackfn2(prevVal, curVal, idx, obj) {
@@ -18,7 +15,5 @@ function testcase() {
 
         var obj2 = { 0: 9, length: "-Infinity" };
 
-        return Array.prototype.reduce.call(obj2, callbackfn2, 1) === 1
-            && !accessed2;
-    }
-runTestCase(testcase);
+assert.sameValue(Array.prototype.reduce.call(obj2, callbackfn2, 1), 1, 'Array.prototype.reduce.call(obj2, callbackfn2, 1)');
+assert.sameValue(accessed2, false, 'accessed2');
diff --git a/test/built-ins/Array/prototype/reduce/15.4.4.21-3-15.js b/test/built-ins/Array/prototype/reduce/15.4.4.21-3-15.js
index 7def35b7b6c6000e4cf2e3fe266f9d1d7612e5ce..afc324344d0e32ef5e67020e98adf712e33de7cd 100644
--- a/test/built-ins/Array/prototype/reduce/15.4.4.21-3-15.js
+++ b/test/built-ins/Array/prototype/reduce/15.4.4.21-3-15.js
@@ -6,17 +6,12 @@ es5id: 15.4.4.21-3-15
 description: >
     Array.prototype.reduce - 'length' is a string containing an
     exponential number
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
-
         function callbackfn(prevVal, curVal, idx, obj) {
             return (curVal === 11 && idx === 1);
         }
 
         var obj = { 1: 11, 2: 9, length: "2E0" };
 
-        return Array.prototype.reduce.call(obj, callbackfn, 1) === true;
-    }
-runTestCase(testcase);
+assert.sameValue(Array.prototype.reduce.call(obj, callbackfn, 1), true, 'Array.prototype.reduce.call(obj, callbackfn, 1)');
diff --git a/test/built-ins/Array/prototype/reduce/15.4.4.21-3-16.js b/test/built-ins/Array/prototype/reduce/15.4.4.21-3-16.js
index 23804aa91c13b6c54d9f686ece918d3ec9e80bd1..9bbc9eeaa5b224267377f21fe165bbe0ba82173f 100644
--- a/test/built-ins/Array/prototype/reduce/15.4.4.21-3-16.js
+++ b/test/built-ins/Array/prototype/reduce/15.4.4.21-3-16.js
@@ -6,17 +6,12 @@ es5id: 15.4.4.21-3-16
 description: >
     Array.prototype.reduce - 'length' is a string containing a hex
     number
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
-
         function callbackfn(prevVal, curVal, idx, obj) {
             return (curVal === 11 && idx === 1);
         }
 
         var obj = { 1: 11, 2: 9, length: "0x0002" };
 
-        return Array.prototype.reduce.call(obj, callbackfn, 1) === true;
-    }
-runTestCase(testcase);
+assert.sameValue(Array.prototype.reduce.call(obj, callbackfn, 1), true, 'Array.prototype.reduce.call(obj, callbackfn, 1)');
diff --git a/test/built-ins/Array/prototype/reduce/15.4.4.21-3-17.js b/test/built-ins/Array/prototype/reduce/15.4.4.21-3-17.js
index 921445a8b19b9bcc1a623454bfd9373f23cd7113..690bbf7e14d26242a7d17efd70a317e40ebcd036 100644
--- a/test/built-ins/Array/prototype/reduce/15.4.4.21-3-17.js
+++ b/test/built-ins/Array/prototype/reduce/15.4.4.21-3-17.js
@@ -6,17 +6,12 @@ es5id: 15.4.4.21-3-17
 description: >
     Array.prototype.reduce - 'length' is a string containing a number
     with leading zeros
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
-
         function callbackfn(prevVal, curVal, idx, obj) {
             return (curVal === 11 && idx === 1);
         }
 
         var obj = { 1: 11, 2: 9, length: "0002.00" };
 
-        return Array.prototype.reduce.call(obj, callbackfn, 1) === true;
-    }
-runTestCase(testcase);
+assert.sameValue(Array.prototype.reduce.call(obj, callbackfn, 1), true, 'Array.prototype.reduce.call(obj, callbackfn, 1)');
diff --git a/test/built-ins/Array/prototype/reduce/15.4.4.21-3-18.js b/test/built-ins/Array/prototype/reduce/15.4.4.21-3-18.js
index 845c3e77f37b9e1c99735cd2a97e4a8a0463c463..a9080d059335b5ac4d4266e38fe307e53a33813d 100644
--- a/test/built-ins/Array/prototype/reduce/15.4.4.21-3-18.js
+++ b/test/built-ins/Array/prototype/reduce/15.4.4.21-3-18.js
@@ -6,11 +6,8 @@ es5id: 15.4.4.21-3-18
 description: >
     Array.prototype.reduce - value of 'length' is a string that can't
     convert to a number
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
-
         var accessed = false;
         function callbackfn(prevVal, curVal, idx, obj) {
             accessed = true;
@@ -19,6 +16,5 @@ function testcase() {
 
         var obj = { 0: 9, length: "asdf!_" };
 
-        return Array.prototype.reduce.call(obj, callbackfn, 1) === 1 && !accessed;
-    }
-runTestCase(testcase);
+assert.sameValue(Array.prototype.reduce.call(obj, callbackfn, 1), 1, 'Array.prototype.reduce.call(obj, callbackfn, 1)');
+assert.sameValue(accessed, false, 'accessed');
diff --git a/test/built-ins/Array/prototype/reduce/15.4.4.21-3-19.js b/test/built-ins/Array/prototype/reduce/15.4.4.21-3-19.js
index 5943822b42e8d7cdf45b97aea9e4d73cb18975c4..d585f3422d890a2b5b1a25bcaea1c3c6a2deb7dd 100644
--- a/test/built-ins/Array/prototype/reduce/15.4.4.21-3-19.js
+++ b/test/built-ins/Array/prototype/reduce/15.4.4.21-3-19.js
@@ -6,11 +6,8 @@ es5id: 15.4.4.21-3-19
 description: >
     Array.prototype.reduce - value of 'length' is an Object which has
     an own toString method
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
-
         function callbackfn(prevVal, curVal, idx, obj) {
             return (curVal === 11 && idx === 1);
         }
@@ -25,6 +22,4 @@ function testcase() {
             }
         };
 
-        return Array.prototype.reduce.call(obj, callbackfn, 1) === true;
-    }
-runTestCase(testcase);
+assert.sameValue(Array.prototype.reduce.call(obj, callbackfn, 1), true, 'Array.prototype.reduce.call(obj, callbackfn, 1)');
diff --git a/test/built-ins/Array/prototype/reduce/15.4.4.21-3-2.js b/test/built-ins/Array/prototype/reduce/15.4.4.21-3-2.js
index e4cd999a374bd14577357ec1e32c02f13f0d8cdc..fd6781f5a57e8be58c84e484931a2deeb8e6b3d1 100644
--- a/test/built-ins/Array/prototype/reduce/15.4.4.21-3-2.js
+++ b/test/built-ins/Array/prototype/reduce/15.4.4.21-3-2.js
@@ -6,18 +6,12 @@ es5id: 15.4.4.21-3-2
 description: >
     Array.prototype.reduce - value of 'length' is a boolean (value is
     true)
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
-
         function callbackfn(prevVal, curVal, idx, obj) {
             return (curVal === 11 && idx === 0);
         }
 
         var obj = { 0: 11, 1: 9, length: true };
 
-        return Array.prototype.reduce.call(obj, callbackfn, 1) === true;
-
-    }
-runTestCase(testcase);
+assert.sameValue(Array.prototype.reduce.call(obj, callbackfn, 1), true, 'Array.prototype.reduce.call(obj, callbackfn, 1)');
diff --git a/test/built-ins/Array/prototype/reduce/15.4.4.21-3-20.js b/test/built-ins/Array/prototype/reduce/15.4.4.21-3-20.js
index 1db54db837e2bd62ded206b491e2177a25f61e5c..3bbdb551462f55f6b624b48b13a62d4e90a66965 100644
--- a/test/built-ins/Array/prototype/reduce/15.4.4.21-3-20.js
+++ b/test/built-ins/Array/prototype/reduce/15.4.4.21-3-20.js
@@ -6,11 +6,8 @@ es5id: 15.4.4.21-3-20
 description: >
     Array.prototype.reduce - value of 'length' is an object which has
     an own valueOf method
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
-
         function callbackfn(prevVal, curVal, idx, obj) {
             return (curVal === 11 && idx === 1);
         }
@@ -25,6 +22,4 @@ function testcase() {
             }
         };
 
-        return Array.prototype.reduce.call(obj, callbackfn, 1) === true;
-    }
-runTestCase(testcase);
+assert.sameValue(Array.prototype.reduce.call(obj, callbackfn, 1), true, 'Array.prototype.reduce.call(obj, callbackfn, 1)');
diff --git a/test/built-ins/Array/prototype/reduce/15.4.4.21-3-21.js b/test/built-ins/Array/prototype/reduce/15.4.4.21-3-21.js
index 641f227accd333aef699cbd4f72f84317ef6ee7d..6df7cf31e7ab08ecff882a5cd078337764134c52 100644
--- a/test/built-ins/Array/prototype/reduce/15.4.4.21-3-21.js
+++ b/test/built-ins/Array/prototype/reduce/15.4.4.21-3-21.js
@@ -7,11 +7,8 @@ description: >
     Array.prototype.reduce - 'length' is an object that has an own
     valueOf method that returns an object and toString method that
     returns a string
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
-
         var valueOfOccured = false;
         var toStringOccured = false;
 
@@ -34,6 +31,6 @@ function testcase() {
             }
         };
 
-        return Array.prototype.reduce.call(obj, callbackfn, 1) === true && valueOfOccured && toStringOccured;
-    }
-runTestCase(testcase);
+assert.sameValue(Array.prototype.reduce.call(obj, callbackfn, 1), true, 'Array.prototype.reduce.call(obj, callbackfn, 1)');
+assert(valueOfOccured, 'valueOfOccured !== true');
+assert(toStringOccured, 'toStringOccured !== true');
diff --git a/test/built-ins/Array/prototype/reduce/15.4.4.21-3-23.js b/test/built-ins/Array/prototype/reduce/15.4.4.21-3-23.js
index 3db766290f7afb6f04aa34714baa741bdd7585ac..5231d12ffa17822d98f0f6fda0e5b38934cc6d07 100644
--- a/test/built-ins/Array/prototype/reduce/15.4.4.21-3-23.js
+++ b/test/built-ins/Array/prototype/reduce/15.4.4.21-3-23.js
@@ -6,11 +6,8 @@ es5id: 15.4.4.21-3-23
 description: >
     Array.prototype.reduce uses inherited valueOf method - 'length' is
     an object with an own toString and inherited valueOf methods
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
-
         var valueOfAccessed = false;
         var toStringAccessed = false;
 
@@ -41,6 +38,6 @@ function testcase() {
             length: child
         };
 
-        return Array.prototype.reduce.call(obj, callbackfn, 1) === true && valueOfAccessed && !toStringAccessed;
-    }
-runTestCase(testcase);
+assert.sameValue(Array.prototype.reduce.call(obj, callbackfn, 1), true, 'Array.prototype.reduce.call(obj, callbackfn, 1)');
+assert(valueOfAccessed, 'valueOfAccessed !== true');
+assert.sameValue(toStringAccessed, false, 'toStringAccessed');
diff --git a/test/built-ins/Array/prototype/reduce/15.4.4.21-3-24.js b/test/built-ins/Array/prototype/reduce/15.4.4.21-3-24.js
index c08fc1a659d80ccee400362579473e31feb98a8b..ceaeabd1960c3d256c03422ba90ec8682c3e13f8 100644
--- a/test/built-ins/Array/prototype/reduce/15.4.4.21-3-24.js
+++ b/test/built-ins/Array/prototype/reduce/15.4.4.21-3-24.js
@@ -6,10 +6,8 @@ es5id: 15.4.4.21-3-24
 description: >
     Array.prototype.reduce - value of 'length' is a positive
     non-integer, ensure truncation occurs in the proper direction
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
         function callbackfn(prevVal, curVal, idx, obj) {
             return (curVal === 11 && idx === 1);
         }
@@ -20,6 +18,4 @@ function testcase() {
             length: 2.685
         };
 
-        return Array.prototype.reduce.call(obj, callbackfn, 1) === true;
-    }
-runTestCase(testcase);
+assert.sameValue(Array.prototype.reduce.call(obj, callbackfn, 1), true, 'Array.prototype.reduce.call(obj, callbackfn, 1)');
diff --git a/test/built-ins/Array/prototype/reduce/15.4.4.21-3-25.js b/test/built-ins/Array/prototype/reduce/15.4.4.21-3-25.js
index 08eb40fa7675f47bf65af53d0f36187dc4dbb5a9..4728d9f4f42e67593745dc17d3dc1f72d2a068b7 100644
--- a/test/built-ins/Array/prototype/reduce/15.4.4.21-3-25.js
+++ b/test/built-ins/Array/prototype/reduce/15.4.4.21-3-25.js
@@ -6,11 +6,8 @@ es5id: 15.4.4.21-3-25
 description: >
     Array.prototype.reduce - value of 'length' is a negative
     non-integer
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
-
         function callbackfn(prevVal, curVal, idx, obj) {
             return (curVal === 11 && idx === 1);
         }
@@ -21,6 +18,4 @@ function testcase() {
             length: -4294967294.5
         };
 
-        return Array.prototype.reduce.call(obj, callbackfn, 1) === 1;
-    }
-runTestCase(testcase);
+assert.sameValue(Array.prototype.reduce.call(obj, callbackfn, 1), 1, 'Array.prototype.reduce.call(obj, callbackfn, 1)');
diff --git a/test/built-ins/Array/prototype/reduce/15.4.4.21-3-3.js b/test/built-ins/Array/prototype/reduce/15.4.4.21-3-3.js
index 50b23de4b87340bf1c11e348e1656d18807a090b..f988b1dc8dfbea65a9dd7f35db9154a5363e9cdd 100644
--- a/test/built-ins/Array/prototype/reduce/15.4.4.21-3-3.js
+++ b/test/built-ins/Array/prototype/reduce/15.4.4.21-3-3.js
@@ -4,11 +4,8 @@
 /*---
 es5id: 15.4.4.21-3-3
 description: Array.prototype.reduce - value of 'length' is a number (value is 0)
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
-
         var accessed = false;
 
         function callbackfn(prevVal, curVal, idx, obj) {
@@ -18,6 +15,5 @@ function testcase() {
 
         var obj = { 0: 1, 1: 1, length: 0 };
 
-        return Array.prototype.reduce.call(obj, callbackfn, 1) === 1 && !accessed;
-    }
-runTestCase(testcase);
+assert.sameValue(Array.prototype.reduce.call(obj, callbackfn, 1), 1, 'Array.prototype.reduce.call(obj, callbackfn, 1)');
+assert.sameValue(accessed, false, 'accessed');
diff --git a/test/built-ins/Array/prototype/reduce/15.4.4.21-3-4.js b/test/built-ins/Array/prototype/reduce/15.4.4.21-3-4.js
index 9806b73d4b58baff15909187be48f17b4d0d10da..b6a0e3ba25dc51662f5c91314e4f38c0dbbf86d9 100644
--- a/test/built-ins/Array/prototype/reduce/15.4.4.21-3-4.js
+++ b/test/built-ins/Array/prototype/reduce/15.4.4.21-3-4.js
@@ -6,11 +6,8 @@ es5id: 15.4.4.21-3-4
 description: >
     Array.prototype.reduce - value of 'length' is a number (value is
     +0)
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
-
         var accessed = false;
 
         function callbackfn(prevVal, curVal, idx, obj) {
@@ -20,6 +17,5 @@ function testcase() {
 
         var obj = { 0: 11, length: +0 };
 
-        return Array.prototype.reduce.call(obj, callbackfn, 1) === 1 && !accessed;
-    }
-runTestCase(testcase);
+assert.sameValue(Array.prototype.reduce.call(obj, callbackfn, 1), 1, 'Array.prototype.reduce.call(obj, callbackfn, 1)');
+assert.sameValue(accessed, false, 'accessed');
diff --git a/test/built-ins/Array/prototype/reduce/15.4.4.21-3-5.js b/test/built-ins/Array/prototype/reduce/15.4.4.21-3-5.js
index f611533a1134caec70cdc2c7a9ac2fe25d984cf8..dd3dc6159cd85743a555cbfed20cfdebcefc6cc5 100644
--- a/test/built-ins/Array/prototype/reduce/15.4.4.21-3-5.js
+++ b/test/built-ins/Array/prototype/reduce/15.4.4.21-3-5.js
@@ -6,11 +6,8 @@ es5id: 15.4.4.21-3-5
 description: >
     Array.prototype.reduce - value of 'length' is a number (value is
     -0)
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
-
         var accessed = false;
 
         function callbackfn(prevVal, curVal, idx, obj) {
@@ -20,6 +17,5 @@ function testcase() {
 
         var obj = { 0: 11, length: -0 };
 
-        return Array.prototype.reduce.call(obj, callbackfn, 1) === 1 && !accessed;
-    }
-runTestCase(testcase);
+assert.sameValue(Array.prototype.reduce.call(obj, callbackfn, 1), 1, 'Array.prototype.reduce.call(obj, callbackfn, 1)');
+assert.sameValue(accessed, false, 'accessed');
diff --git a/test/built-ins/Array/prototype/reduce/15.4.4.21-3-6.js b/test/built-ins/Array/prototype/reduce/15.4.4.21-3-6.js
index 200e9cf60cd3057f7f16caf228989a6d98594f0f..8a307a43d1f53881881ac78ff50b1ba064d341a4 100644
--- a/test/built-ins/Array/prototype/reduce/15.4.4.21-3-6.js
+++ b/test/built-ins/Array/prototype/reduce/15.4.4.21-3-6.js
@@ -6,17 +6,12 @@ es5id: 15.4.4.21-3-6
 description: >
     Array.prototype.reduce - value of 'length' is a number (value is
     positive)
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
-
         function callbackfn(prevVal, curVal, idx, obj) {
             return (curVal === 11 && idx === 1);
         }
 
         var obj = { 1: 11, 2: 9, length: 2 };
 
-        return Array.prototype.reduce.call(obj, callbackfn, 1) === true;
-    }
-runTestCase(testcase);
+assert.sameValue(Array.prototype.reduce.call(obj, callbackfn, 1), true, 'Array.prototype.reduce.call(obj, callbackfn, 1)');
diff --git a/test/built-ins/Array/prototype/reduce/15.4.4.21-3-7.js b/test/built-ins/Array/prototype/reduce/15.4.4.21-3-7.js
index 9532748865effb6991604f6a4d4a1123e8e4e21d..9499dd414dce3522232460d51ba068602fc8149b 100644
--- a/test/built-ins/Array/prototype/reduce/15.4.4.21-3-7.js
+++ b/test/built-ins/Array/prototype/reduce/15.4.4.21-3-7.js
@@ -6,17 +6,12 @@ es5id: 15.4.4.21-3-7
 description: >
     Array.prototype.reduce - value of 'length' is a number (value is
     negative)
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
-
         function callbackfn(prevVal, curVal, idx, obj) {
             return (curVal === 11 && idx === 1);
         }
 
         var obj = { 1: 11, 2: 9, length: -4294967294 };
 
-        return Array.prototype.reduce.call(obj, callbackfn, 1) === 1;
-    }
-runTestCase(testcase);
+assert.sameValue(Array.prototype.reduce.call(obj, callbackfn, 1), 1, 'Array.prototype.reduce.call(obj, callbackfn, 1)');
diff --git a/test/built-ins/Array/prototype/reduce/15.4.4.21-3-9.js b/test/built-ins/Array/prototype/reduce/15.4.4.21-3-9.js
index 8943a192984a527eee46c9ad5264380d2676183e..122c00077fa5641a5159a045ae86917181b8b6da 100644
--- a/test/built-ins/Array/prototype/reduce/15.4.4.21-3-9.js
+++ b/test/built-ins/Array/prototype/reduce/15.4.4.21-3-9.js
@@ -6,11 +6,8 @@ es5id: 15.4.4.21-3-9
 description: >
     Array.prototype.reduce - value of 'length' is a number (value is
     -Infinity)
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
-
         var accessed = false;
 
         function callbackfn(prevVal, curVal, idx, obj) {
@@ -19,6 +16,5 @@ function testcase() {
 
         var obj = { 0: 9, length: -Infinity };
 
-        return Array.prototype.reduce.call(obj, callbackfn, 1) === 1 && !accessed;
-    }
-runTestCase(testcase);
+assert.sameValue(Array.prototype.reduce.call(obj, callbackfn, 1), 1, 'Array.prototype.reduce.call(obj, callbackfn, 1)');
+assert.sameValue(accessed, false, 'accessed');
diff --git a/test/built-ins/Array/prototype/reduce/15.4.4.21-4-12.js b/test/built-ins/Array/prototype/reduce/15.4.4.21-4-12.js
index 68b217dec768ab19de7cfec2ef87d6a6b56a3450..5d5da70f65ec758b9266088740ee91e8487d5f81 100644
--- a/test/built-ins/Array/prototype/reduce/15.4.4.21-4-12.js
+++ b/test/built-ins/Array/prototype/reduce/15.4.4.21-4-12.js
@@ -4,17 +4,13 @@
 /*---
 es5id: 15.4.4.21-4-12
 description: Array.prototype.reduce - 'callbackfn' is a function
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
-
         var accessed = false;
         function callbackfn(prevVal, curVal, idx, obj) {
             accessed = true;
             return curVal > 10;
         }
 
-        return [11, 9].reduce(callbackfn, 1) === false && accessed;
-    }
-runTestCase(testcase);
+assert.sameValue([11, 9].reduce(callbackfn, 1), false, '[11, 9].reduce(callbackfn, 1)');
+assert(accessed, 'accessed !== true');
diff --git a/test/built-ins/Array/prototype/reduce/15.4.4.21-5-9.js b/test/built-ins/Array/prototype/reduce/15.4.4.21-5-9.js
index 49eb6e0d36e9784b6262630a7b41f2b426753527..294a20c492886a88503c72ef9edb2b04244215ba 100644
--- a/test/built-ins/Array/prototype/reduce/15.4.4.21-5-9.js
+++ b/test/built-ins/Array/prototype/reduce/15.4.4.21-5-9.js
@@ -6,16 +6,12 @@ es5id: 15.4.4.21-5-9
 description: >
     Array.prototype.reduce - 'initialValue' is returned if 'len' is 0
     and 'initialValue' is present
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
-
         var accessed = false;
         function callbackfn(prevVal, curVal, idx, obj) {
             accessed = true;
         }
 
-        return [].reduce(callbackfn, 3) === 3 && !accessed;
-    }
-runTestCase(testcase);
+assert.sameValue([].reduce(callbackfn, 3), 3, '[].reduce(callbackfn, 3)');
+assert.sameValue(accessed, false, 'accessed');
diff --git a/test/built-ins/Array/prototype/reduce/15.4.4.21-8-b-2.js b/test/built-ins/Array/prototype/reduce/15.4.4.21-8-b-2.js
index 60a3e9977084647497bdc8bd7a319fdfb47b47e5..58799e4c0f38c77310d89d65dc468684c496712a 100644
--- a/test/built-ins/Array/prototype/reduce/15.4.4.21-8-b-2.js
+++ b/test/built-ins/Array/prototype/reduce/15.4.4.21-8-b-2.js
@@ -6,11 +6,8 @@ es5id: 15.4.4.21-8-b-2
 description: >
     Array.prototype.reduce - modifications to length don't change
     number of iterations in step 9
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
-
         function callbackfn(prevVal, curVal, idx, obj) {
             return idx;
         }
@@ -25,6 +22,4 @@ function testcase() {
             configurable: true
         });
 
-        return Array.prototype.reduce.call(obj, callbackfn) === 3;
-    }
-runTestCase(testcase);
+assert.sameValue(Array.prototype.reduce.call(obj, callbackfn), 3, 'Array.prototype.reduce.call(obj, callbackfn)');
diff --git a/test/built-ins/Array/prototype/reduce/15.4.4.21-8-b-3.js b/test/built-ins/Array/prototype/reduce/15.4.4.21-8-b-3.js
index d9ecb6e2e4c256a93180dd819567facf758efa84..a7d8312cbc2ce57af1045dc82d5d4e970e8396d8 100644
--- a/test/built-ins/Array/prototype/reduce/15.4.4.21-8-b-3.js
+++ b/test/built-ins/Array/prototype/reduce/15.4.4.21-8-b-3.js
@@ -4,11 +4,8 @@
 /*---
 es5id: 15.4.4.21-8-b-3
 description: Array.prototype.reduce - loop is broken once 'kPresent' is true
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
-
         var called = 0;
         var testResult = false;
         var firstCalled = 0;
@@ -40,6 +37,7 @@ function testcase() {
         });
 
         arr.reduce(callbackfn);
-        return testResult && firstCalled === 1 && secondCalled === 1;
-    }
-runTestCase(testcase);
+
+assert(testResult, 'testResult !== true');
+assert.sameValue(firstCalled, 1, 'firstCalled');
+assert.sameValue(secondCalled, 1, 'secondCalled');
diff --git a/test/built-ins/Array/prototype/reduce/15.4.4.21-8-b-iii-1-1.js b/test/built-ins/Array/prototype/reduce/15.4.4.21-8-b-iii-1-1.js
index afa7bdf8e12379da89bc1849fc37a1fc89759a4e..2015994b522edeafd17719082eaa080c830b3920 100644
--- a/test/built-ins/Array/prototype/reduce/15.4.4.21-8-b-iii-1-1.js
+++ b/test/built-ins/Array/prototype/reduce/15.4.4.21-8-b-iii-1-1.js
@@ -6,11 +6,8 @@ es5id: 15.4.4.21-8-b-iii-1-1
 description: >
     Array.prototype.reduce - element to be retrieved is own data
     property on an Array-like object
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
-
         var testResult = false;
         function callbackfn(prevVal, curVal, idx, obj) {
             if (idx === 1) {
@@ -20,6 +17,5 @@ function testcase() {
 
         var obj = { 0: 0, 1: 1, 2: 2, length: 2 };
         Array.prototype.reduce.call(obj, callbackfn);
-        return testResult;
-    }
-runTestCase(testcase);
+
+assert(testResult, 'testResult !== true');
diff --git a/test/built-ins/Array/prototype/reduce/15.4.4.21-8-b-iii-1-10.js b/test/built-ins/Array/prototype/reduce/15.4.4.21-8-b-iii-1-10.js
index 6529df29b447c1f686bc53670c6e6de04e5f2441..afd039d95c315c8ba647f8954a7d392f784f8e72 100644
--- a/test/built-ins/Array/prototype/reduce/15.4.4.21-8-b-iii-1-10.js
+++ b/test/built-ins/Array/prototype/reduce/15.4.4.21-8-b-iii-1-10.js
@@ -6,10 +6,8 @@ es5id: 15.4.4.21-8-b-iii-1-10
 description: >
     Array.prototype.reduce - when element to be retrieved is own
     accessor property on an Array
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
         var testResult = false;
 
         function callbackfn(prevVal, curVal, idx, obj) {
@@ -28,6 +26,5 @@ function testcase() {
         });
 
         arr.reduce(callbackfn);
-        return testResult;
-    }
-runTestCase(testcase);
+
+assert(testResult, 'testResult !== true');
diff --git a/test/built-ins/Array/prototype/reduce/15.4.4.21-8-b-iii-1-11.js b/test/built-ins/Array/prototype/reduce/15.4.4.21-8-b-iii-1-11.js
index d3a2d8e52329d4ee878c3bb9f5618c917918b3e5..749849c5ce18417910cd82c4a262e5527ec964c3 100644
--- a/test/built-ins/Array/prototype/reduce/15.4.4.21-8-b-iii-1-11.js
+++ b/test/built-ins/Array/prototype/reduce/15.4.4.21-8-b-iii-1-11.js
@@ -7,11 +7,8 @@ description: >
     Array.prototype.reduce - element to be retrieved is own accessor
     property that overrides an inherited data property on an
     Array-like object
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
-
         var testResult = false;
         function callbackfn(prevVal, curVal, idx, obj) {
             if (idx === 1) {
@@ -35,6 +32,5 @@ function testcase() {
         });
 
         Array.prototype.reduce.call(child, callbackfn);
-        return testResult;
-    }
-runTestCase(testcase);
+
+assert(testResult, 'testResult !== true');
diff --git a/test/built-ins/Array/prototype/reduce/15.4.4.21-8-b-iii-1-13.js b/test/built-ins/Array/prototype/reduce/15.4.4.21-8-b-iii-1-13.js
index 267ba2a338c41bdd4116a1065a8875341a92604d..a1d8b0ae540c70c38b9ffd0ac1420bce9838c16f 100644
--- a/test/built-ins/Array/prototype/reduce/15.4.4.21-8-b-iii-1-13.js
+++ b/test/built-ins/Array/prototype/reduce/15.4.4.21-8-b-iii-1-13.js
@@ -7,10 +7,8 @@ description: >
     Array.prototype.reduce - element to be retrieved is own accessor
     property that overrides an inherited accessor property on an
     Array-like object
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
         var testResult = false;
 
         function callbackfn(prevVal, curVal, idx, obj) {
@@ -42,6 +40,5 @@ function testcase() {
         });
 
         Array.prototype.reduce.call(child, callbackfn);
-        return testResult;
-    }
-runTestCase(testcase);
+
+assert(testResult, 'testResult !== true');
diff --git a/test/built-ins/Array/prototype/reduce/15.4.4.21-8-b-iii-1-15.js b/test/built-ins/Array/prototype/reduce/15.4.4.21-8-b-iii-1-15.js
index 4bf79ff7bd98603207eed7e9fd46322ebfad10ff..4e88911dc7eb587bd8b136623427e349815d731e 100644
--- a/test/built-ins/Array/prototype/reduce/15.4.4.21-8-b-iii-1-15.js
+++ b/test/built-ins/Array/prototype/reduce/15.4.4.21-8-b-iii-1-15.js
@@ -6,11 +6,8 @@ es5id: 15.4.4.21-8-b-iii-1-15
 description: >
     Array.prototype.reduce - element to be retrieved is inherited
     accessor property on an Array-like object
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
-
         var testResult = false;
         function callbackfn(prevVal, curVal, idx, obj) {
             if (idx === 1) {
@@ -34,6 +31,5 @@ function testcase() {
         child.length = 3;
 
         Array.prototype.reduce.call(child, callbackfn);
-        return testResult;
-    }
-runTestCase(testcase);
+
+assert(testResult, 'testResult !== true');
diff --git a/test/built-ins/Array/prototype/reduce/15.4.4.21-8-b-iii-1-17.js b/test/built-ins/Array/prototype/reduce/15.4.4.21-8-b-iii-1-17.js
index fc535d6ad8c9f3c83a83562b64fe5a238ce8de8b..df24619032e13b8c1f61301b56d444aa4e7d8dd4 100644
--- a/test/built-ins/Array/prototype/reduce/15.4.4.21-8-b-iii-1-17.js
+++ b/test/built-ins/Array/prototype/reduce/15.4.4.21-8-b-iii-1-17.js
@@ -6,11 +6,8 @@ es5id: 15.4.4.21-8-b-iii-1-17
 description: >
     Array.prototype.reduce - element to be retrieved is own accessor
     property without a get function on an Array-like object
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
-
         var testResult = false;
         function callbackfn(prevVal, curVal, idx, obj) {
             if (idx === 1) {
@@ -26,6 +23,5 @@ function testcase() {
         });
 
         Array.prototype.reduce.call(obj, callbackfn);
-        return testResult;
-    }
-runTestCase(testcase);
+
+assert(testResult, 'testResult !== true');
diff --git a/test/built-ins/Array/prototype/reduce/15.4.4.21-8-b-iii-1-18.js b/test/built-ins/Array/prototype/reduce/15.4.4.21-8-b-iii-1-18.js
index 836b0f764fdb5688f41f6ec0f4f279872ea0f835..56d7265b80d7019d138c849ec4fd1e94602d6585 100644
--- a/test/built-ins/Array/prototype/reduce/15.4.4.21-8-b-iii-1-18.js
+++ b/test/built-ins/Array/prototype/reduce/15.4.4.21-8-b-iii-1-18.js
@@ -6,11 +6,8 @@ es5id: 15.4.4.21-8-b-iii-1-18
 description: >
     Array.prototype.reduce - element to be retrieved is own accessor
     property without a get function on an Array
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
-
         var testResult = false;
         function callbackfn(prevVal, curVal, idx, obj) {
             if (idx === 1) {
@@ -26,6 +23,5 @@ function testcase() {
         });
 
         arr.reduce(callbackfn);
-        return testResult;
-    }
-runTestCase(testcase);
+
+assert(testResult, 'testResult !== true');
diff --git a/test/built-ins/Array/prototype/reduce/15.4.4.21-8-b-iii-1-2.js b/test/built-ins/Array/prototype/reduce/15.4.4.21-8-b-iii-1-2.js
index 248d8441b0c631c0457a13b501e4ea4565777aaf..95847b6205830cc5b8be379f7ca4500693198ccb 100644
--- a/test/built-ins/Array/prototype/reduce/15.4.4.21-8-b-iii-1-2.js
+++ b/test/built-ins/Array/prototype/reduce/15.4.4.21-8-b-iii-1-2.js
@@ -6,11 +6,8 @@ es5id: 15.4.4.21-8-b-iii-1-2
 description: >
     Array.prototype.reduce - element to be retrieved is own data
     property on an Array
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
-
         var testResult = false;
         function callbackfn(prevVal, curVal, idx, obj) {
             if (idx === 1) {
@@ -20,6 +17,5 @@ function testcase() {
 
         var arr = [0, 1, 2];
         arr.reduce(callbackfn);
-        return testResult;
-    }
-runTestCase(testcase);
+
+assert(testResult, 'testResult !== true');
diff --git a/test/built-ins/Array/prototype/reduce/15.4.4.21-8-b-iii-1-21.js b/test/built-ins/Array/prototype/reduce/15.4.4.21-8-b-iii-1-21.js
index 9bc6297980d1cbe9f4db2c660bccc32da06603a7..a819487734ff1ffc4bd1a1bdf35918ee72703e03 100644
--- a/test/built-ins/Array/prototype/reduce/15.4.4.21-8-b-iii-1-21.js
+++ b/test/built-ins/Array/prototype/reduce/15.4.4.21-8-b-iii-1-21.js
@@ -6,11 +6,8 @@ es5id: 15.4.4.21-8-b-iii-1-21
 description: >
     Array.prototype.reduce - element to be retrieved is inherited
     accessor property without a get function on an Array-like object
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
-
         var testResult = false;
         function callbackfn(prevVal, curVal, idx, obj) {
             if (idx === 1) {
@@ -32,6 +29,5 @@ function testcase() {
         child.length = 3;
 
         Array.prototype.reduce.call(child, callbackfn);
-        return testResult;
-    }
-runTestCase(testcase);
+
+assert(testResult, 'testResult !== true');
diff --git a/test/built-ins/Array/prototype/reduce/15.4.4.21-8-b-iii-1-25.js b/test/built-ins/Array/prototype/reduce/15.4.4.21-8-b-iii-1-25.js
index f806300bb251389258f668aceab4753aa694dbed..ffc348e3b1253ef0add1923fbba29b6b7f29577e 100644
--- a/test/built-ins/Array/prototype/reduce/15.4.4.21-8-b-iii-1-25.js
+++ b/test/built-ins/Array/prototype/reduce/15.4.4.21-8-b-iii-1-25.js
@@ -7,11 +7,8 @@ description: >
     Array.prototype.reduce - This object is the Arguments object which
     implements its own property get method (number of arguments is
     less than number of parameters)
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
-
         var testResult = false;
         function callbackfn(prevVal, curVal, idx, obj) {
             if (idx === 1) {
@@ -24,6 +21,5 @@ function testcase() {
         };
 
         func(0, 1);
-        return testResult;
-    }
-runTestCase(testcase);
+
+assert(testResult, 'testResult !== true');
diff --git a/test/built-ins/Array/prototype/reduce/15.4.4.21-8-b-iii-1-26.js b/test/built-ins/Array/prototype/reduce/15.4.4.21-8-b-iii-1-26.js
index 913112c7e5afa1e6e1e69905fcfeea4daa4f36d2..77cf2e205916dc0166e59a5ac0f038de7096fbce 100644
--- a/test/built-ins/Array/prototype/reduce/15.4.4.21-8-b-iii-1-26.js
+++ b/test/built-ins/Array/prototype/reduce/15.4.4.21-8-b-iii-1-26.js
@@ -7,11 +7,8 @@ description: >
     Array.prototype.reduce - This object is the Arguments object which
     implements its own property get method (number of arguments equals
     number of parameters)
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
-
         var testResult = false;
         function callbackfn(prevVal, curVal, idx, obj) {
             if (idx === 2) {
@@ -25,6 +22,5 @@ function testcase() {
         };
 
         func(0, 1, 2);
-        return testResult;
-    }
-runTestCase(testcase);
+
+assert(testResult, 'testResult !== true');
diff --git a/test/built-ins/Array/prototype/reduce/15.4.4.21-8-b-iii-1-27.js b/test/built-ins/Array/prototype/reduce/15.4.4.21-8-b-iii-1-27.js
index 75cfe2b640426d8c33433d452882e97f3eb90047..79cf151db4792d7e7397c07fd655519c1a4e5243 100644
--- a/test/built-ins/Array/prototype/reduce/15.4.4.21-8-b-iii-1-27.js
+++ b/test/built-ins/Array/prototype/reduce/15.4.4.21-8-b-iii-1-27.js
@@ -7,11 +7,8 @@ description: >
     Array.prototype.reduce - This object is the Arguments object which
     implements its own property get method (number of arguments is
     greater than number of parameters)
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
-
         var testResult = false;
         function callbackfn(prevVal, curVal, idx, obj) {
             if (idx === 3) {
@@ -26,6 +23,5 @@ function testcase() {
         };
 
         func(0, 1, 2, 3);
-        return testResult;
-    }
-runTestCase(testcase);
+
+assert(testResult, 'testResult !== true');
diff --git a/test/built-ins/Array/prototype/reduce/15.4.4.21-8-b-iii-1-28.js b/test/built-ins/Array/prototype/reduce/15.4.4.21-8-b-iii-1-28.js
index 94325f7c81f109a6abe6ad2bacccc16eba9b753b..451cf864fb38c52d80533f7d0902606f81ac703a 100644
--- a/test/built-ins/Array/prototype/reduce/15.4.4.21-8-b-iii-1-28.js
+++ b/test/built-ins/Array/prototype/reduce/15.4.4.21-8-b-iii-1-28.js
@@ -6,11 +6,8 @@ es5id: 15.4.4.21-8-b-iii-1-28
 description: >
     Array.prototype.reduce - applied to String object, which
     implements its own property get method
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
-
         var testResult = false;
         function callbackfn(prevVal, curVal, idx, obj) {
             if (idx === 1) {
@@ -20,7 +17,5 @@ function testcase() {
 
         var str = new String("012");
         Array.prototype.reduce.call(str, callbackfn);
-        return testResult;
 
-    }
-runTestCase(testcase);
+assert(testResult, 'testResult !== true');
diff --git a/test/built-ins/Array/prototype/reduce/15.4.4.21-8-b-iii-1-29.js b/test/built-ins/Array/prototype/reduce/15.4.4.21-8-b-iii-1-29.js
index 7592901dca1c504353768340f07077c301668377..ead6d3bbcb917b8c8384aca1f1632c45a128915e 100644
--- a/test/built-ins/Array/prototype/reduce/15.4.4.21-8-b-iii-1-29.js
+++ b/test/built-ins/Array/prototype/reduce/15.4.4.21-8-b-iii-1-29.js
@@ -6,11 +6,8 @@ es5id: 15.4.4.21-8-b-iii-1-29
 description: >
     Array.prototype.reduce - applied to Function object which
     implements its own property get method
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
-
         var testResult = false;
         function callbackfn(prevVal, curVal, idx, obj) {
             if (idx === 1) {
@@ -27,7 +24,5 @@ function testcase() {
         obj[3] = 3;
 
         Array.prototype.reduce.call(obj, callbackfn);
-        return testResult;
 
-    }
-runTestCase(testcase);
+assert(testResult, 'testResult !== true');
diff --git a/test/built-ins/Array/prototype/reduce/15.4.4.21-8-b-iii-1-3.js b/test/built-ins/Array/prototype/reduce/15.4.4.21-8-b-iii-1-3.js
index 1e98797a9aa87f4f147434f4d9feb8964ed0f108..c110f39fefecb09dbf6e422615cd8bcf1825502b 100644
--- a/test/built-ins/Array/prototype/reduce/15.4.4.21-8-b-iii-1-3.js
+++ b/test/built-ins/Array/prototype/reduce/15.4.4.21-8-b-iii-1-3.js
@@ -7,11 +7,8 @@ description: >
     Array.prototype.reduce - element to be retrieved is own data
     property that overrides an inherited data property on an
     Array-like object
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
-
         var testResult = false;
         function callbackfn(prevVal, curVal, idx, obj) {
             if (idx === 1) {
@@ -29,7 +26,5 @@ function testcase() {
         child.length = 3;
 
         Array.prototype.reduce.call(child, callbackfn);
-        return testResult;
 
-    }
-runTestCase(testcase);
+assert(testResult, 'testResult !== true');
diff --git a/test/built-ins/Array/prototype/reduce/15.4.4.21-8-b-iii-1-30.js b/test/built-ins/Array/prototype/reduce/15.4.4.21-8-b-iii-1-30.js
index 3c611a8d096d6bc33ca00b4b140511571884da0f..5b44c264eb34b81a68d55010b1d53a8e16f64b45 100644
--- a/test/built-ins/Array/prototype/reduce/15.4.4.21-8-b-iii-1-30.js
+++ b/test/built-ins/Array/prototype/reduce/15.4.4.21-8-b-iii-1-30.js
@@ -6,11 +6,8 @@ es5id: 15.4.4.21-8-b-iii-1-30
 description: >
     Array.prototype.reduce - element changed by getter on current
     iterations is observed in subsequent iterations on an Array
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
-
         var testResult = false;
         function callbackfn(prevVal, curVal, idx, obj) {
             if (idx === 1) {
@@ -41,6 +38,5 @@ function testcase() {
         });
 
         arr.reduce(callbackfn);
-        return testResult;
-    }
-runTestCase(testcase);
+
+assert(testResult, 'testResult !== true');
diff --git a/test/built-ins/Array/prototype/reduce/15.4.4.21-8-b-iii-1-31.js b/test/built-ins/Array/prototype/reduce/15.4.4.21-8-b-iii-1-31.js
index 2f4076f1b8a90f09389a5ac4628843de88e936a2..84ebb33406e43c37241969b169b59e31edbcd068 100644
--- a/test/built-ins/Array/prototype/reduce/15.4.4.21-8-b-iii-1-31.js
+++ b/test/built-ins/Array/prototype/reduce/15.4.4.21-8-b-iii-1-31.js
@@ -7,11 +7,8 @@ description: >
     Array.prototype.reduce - element changed by getter on current
     iterations is observed in subsequent iterations on an Array-like
     object
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
-
         var testResult = false;
         function callbackfn(prevVal, curVal, idx, obj) {
             if (idx === 1) {
@@ -42,7 +39,5 @@ function testcase() {
         });
 
         Array.prototype.reduce.call(obj, callbackfn);
-        return testResult;
 
-    }
-runTestCase(testcase);
+assert(testResult, 'testResult !== true');
diff --git a/test/built-ins/Array/prototype/reduce/15.4.4.21-8-b-iii-1-5.js b/test/built-ins/Array/prototype/reduce/15.4.4.21-8-b-iii-1-5.js
index d8db9e89aa1c76d1cd742b7f1216cfb6d82ee245..d9f5cd35ddf47570e65a29c5e5e50019baa9bf3d 100644
--- a/test/built-ins/Array/prototype/reduce/15.4.4.21-8-b-iii-1-5.js
+++ b/test/built-ins/Array/prototype/reduce/15.4.4.21-8-b-iii-1-5.js
@@ -7,11 +7,8 @@ description: >
     Array.prototype.reduce - element to be retrieved is own data
     property that overrides an inherited accessor property on an
     Array-like object
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
-
         var testResult = false;
         function callbackfn(prevVal, curVal, idx, obj) {
             if (idx === 1) {
@@ -40,6 +37,5 @@ function testcase() {
         child[1] = "1";
 
         Array.prototype.reduce.call(child, callbackfn);
-        return testResult;
-    }
-runTestCase(testcase);
+
+assert(testResult, 'testResult !== true');
diff --git a/test/built-ins/Array/prototype/reduce/15.4.4.21-8-b-iii-1-7.js b/test/built-ins/Array/prototype/reduce/15.4.4.21-8-b-iii-1-7.js
index e72682d8c294c0c1f9c07f03faf83379e01fcf6e..6abc1c045bc6a8a79f42830f6ef18a05e0d912ba 100644
--- a/test/built-ins/Array/prototype/reduce/15.4.4.21-8-b-iii-1-7.js
+++ b/test/built-ins/Array/prototype/reduce/15.4.4.21-8-b-iii-1-7.js
@@ -6,11 +6,8 @@ es5id: 15.4.4.21-8-b-iii-1-7
 description: >
     Array.prototype.reduce - element to be retrieved is inherited data
     property on an Array-like object
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
-
         var testResult = false;
         function callbackfn(prevVal, curVal, idx, obj) {
             if (idx === 1) {
@@ -26,6 +23,5 @@ function testcase() {
         child.length = 3;
 
         Array.prototype.reduce.call(child, callbackfn);
-        return testResult;
-    }
-runTestCase(testcase);
+
+assert(testResult, 'testResult !== true');
diff --git a/test/built-ins/Array/prototype/reduce/15.4.4.21-8-b-iii-1-9.js b/test/built-ins/Array/prototype/reduce/15.4.4.21-8-b-iii-1-9.js
index a7cb749e30e88d8bbea6b02a34efd4c92191ace5..2226c04b2c539a5d3f77e8d66d7da810acc015f2 100644
--- a/test/built-ins/Array/prototype/reduce/15.4.4.21-8-b-iii-1-9.js
+++ b/test/built-ins/Array/prototype/reduce/15.4.4.21-8-b-iii-1-9.js
@@ -6,11 +6,8 @@ es5id: 15.4.4.21-8-b-iii-1-9
 description: >
     Array.prototype.reduce - element to be retrieved is own accessor
     property on an Array-like object
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
-
         var testResult = false;
         function callbackfn(prevVal, curVal, idx, obj) {
             if (idx === 1) {
@@ -27,6 +24,5 @@ function testcase() {
         });
 
         Array.prototype.reduce.call(obj, callbackfn);
-        return testResult;
-    }
-runTestCase(testcase);
+
+assert(testResult, 'testResult !== true');
diff --git a/test/built-ins/Array/prototype/reduce/15.4.4.21-9-1.js b/test/built-ins/Array/prototype/reduce/15.4.4.21-9-1.js
index 8b7b014c15885b14138cacae12a8916c538cb7f2..97a2f04fa0c65ba473a3688cc2c196046f80020a 100644
--- a/test/built-ins/Array/prototype/reduce/15.4.4.21-9-1.js
+++ b/test/built-ins/Array/prototype/reduce/15.4.4.21-9-1.js
@@ -6,10 +6,8 @@ es5id: 15.4.4.21-9-1
 description: >
     Array.prototype.reduce doesn't consider new elements added to
     array after it is called
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
         function callbackfn(prevVal, curVal, idx, obj) {
             arr[5] = 6;
             arr[2] = 3;
@@ -17,6 +15,5 @@ function testcase() {
         }
 
         var arr = [1, 2, , 4, '5'];
-        return arr.reduce(callbackfn) === "105";
-    }
-runTestCase(testcase);
+
+assert.sameValue(arr.reduce(callbackfn), "105", 'arr.reduce(callbackfn)');
diff --git a/test/built-ins/Array/prototype/reduce/15.4.4.21-9-10.js b/test/built-ins/Array/prototype/reduce/15.4.4.21-9-10.js
index 9746e1cbf1836cccbf361d4905f128f5ccff6e31..f5a45d66079a95b62dacd16de906e44035f63d41 100644
--- a/test/built-ins/Array/prototype/reduce/15.4.4.21-9-10.js
+++ b/test/built-ins/Array/prototype/reduce/15.4.4.21-9-10.js
@@ -6,11 +6,8 @@ es5id: 15.4.4.21-9-10
 description: >
     Array.prototype.reduce called with an initial value doesn't
     consider new elements added to array after it is called
-includes: [runTestCase.js]
 ---*/
 
-function testcase() { 
- 
   function callbackfn(prevVal, curVal, idx, obj) {
     arr[5] = 6;
     arr[2] = 3;   
@@ -18,6 +15,5 @@ function testcase() {
   }
 
   var arr = [1,2,,4,'5'];
-  return arr.reduce(callbackfn, "") === "12345";
- }
-runTestCase(testcase);
+
+assert.sameValue(arr.reduce(callbackfn, ""), "12345", 'arr.reduce(callbackfn, "")');
diff --git a/test/built-ins/Array/prototype/reduce/15.4.4.21-9-2.js b/test/built-ins/Array/prototype/reduce/15.4.4.21-9-2.js
index 00a8baf1d44d64b2be933ab1b9f0836a8accf47f..0999bcdc829e61a243acfa7d19cbebdc37b1464b 100644
--- a/test/built-ins/Array/prototype/reduce/15.4.4.21-9-2.js
+++ b/test/built-ins/Array/prototype/reduce/15.4.4.21-9-2.js
@@ -6,11 +6,8 @@ es5id: 15.4.4.21-9-2
 description: >
     Array.prototype.reduce considers new value of elements in array
     after it is called
-includes: [runTestCase.js]
 ---*/
 
-function testcase() { 
- 
   function callbackfn(prevVal, curVal, idx, obj)
   {
     arr[3] = -2;
@@ -19,8 +16,5 @@ function testcase() {
   }
 
   var arr = [1,2,3,4,5];
-  if(arr.reduce(callbackfn) === 3)
-    return true;  
-  
- }
-runTestCase(testcase);
+
+assert.sameValue(arr.reduce(callbackfn), 3, 'arr.reduce(callbackfn)');
diff --git a/test/built-ins/Array/prototype/reduce/15.4.4.21-9-4.js b/test/built-ins/Array/prototype/reduce/15.4.4.21-9-4.js
index e901425984ea37587f9db5a3ea03e5e23aa0fa09..b183adfbd0b2f4b877e0c82519ac4ea1c872e425 100644
--- a/test/built-ins/Array/prototype/reduce/15.4.4.21-9-4.js
+++ b/test/built-ins/Array/prototype/reduce/15.4.4.21-9-4.js
@@ -6,11 +6,8 @@ es5id: 15.4.4.21-9-4
 description: >
     Array.prototype.reduce doesn't visit deleted elements when
     Array.length is decreased
-includes: [runTestCase.js]
 ---*/
 
-function testcase() { 
- 
   function callbackfn(prevVal, curVal, idx, obj)
   {
     arr.length = 2;
@@ -18,8 +15,5 @@ function testcase() {
   }
 
   var arr = [1,2,3,4,5];
-  if(arr.reduce(callbackfn) === 3 )
-    return true;  
-  
- }
-runTestCase(testcase);
+
+assert.sameValue(arr.reduce(callbackfn), 3, 'arr.reduce(callbackfn)');
diff --git a/test/built-ins/Array/prototype/reduce/15.4.4.21-9-5.js b/test/built-ins/Array/prototype/reduce/15.4.4.21-9-5.js
index 8676b3e3804f6e6ddf4f7e62bf766a45570ddb37..c6e96e9a712ef73ef6a0ceabf52816e72c0dea4e 100644
--- a/test/built-ins/Array/prototype/reduce/15.4.4.21-9-5.js
+++ b/test/built-ins/Array/prototype/reduce/15.4.4.21-9-5.js
@@ -6,11 +6,8 @@ es5id: 15.4.4.21-9-5
 description: >
     Array.prototype.reduce - callbackfn not called for array with one
     element
-includes: [runTestCase.js]
 ---*/
 
-function testcase() { 
- 
   var callCnt = 0;
   function callbackfn(prevVal, curVal, idx, obj)
   {
@@ -19,7 +16,6 @@ function testcase() {
   }
 
   var arr = [1];
-  if(arr.reduce(callbackfn) === 1 && callCnt === 0 )
-    return true;    
- }
-runTestCase(testcase);
+
+assert.sameValue(arr.reduce(callbackfn), 1, 'arr.reduce(callbackfn)');
+assert.sameValue(callCnt, 0, 'callCnt');
diff --git a/test/built-ins/Array/prototype/reduce/15.4.4.21-9-7.js b/test/built-ins/Array/prototype/reduce/15.4.4.21-9-7.js
index 07285709e232563e30ca5075721151377d0e05e2..9f6baab99d48be1fa2b328ded4733019b8df0bc6 100644
--- a/test/built-ins/Array/prototype/reduce/15.4.4.21-9-7.js
+++ b/test/built-ins/Array/prototype/reduce/15.4.4.21-9-7.js
@@ -6,10 +6,8 @@ es5id: 15.4.4.21-9-7
 description: >
     Array.prototype.reduce stops calling callbackfn once the array is
     deleted during the call
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
         function callbackfn(prevVal, curVal, idx, obj) {
             delete o.arr;
             return prevVal + curVal;
@@ -17,6 +15,6 @@ function testcase() {
 
         var o = new Object();
         o.arr = ['1', 2, 3, 4, 5];
-        return o.arr.reduce(callbackfn) === "12345" && !o.hasOwnProperty("arr");
-    }
-runTestCase(testcase);
+
+assert.sameValue(o.arr.reduce(callbackfn), "12345", 'o.arr.reduce(callbackfn)');
+assert.sameValue(o.hasOwnProperty("arr"), false, 'o.hasOwnProperty("arr")');
diff --git a/test/built-ins/Array/prototype/reduce/15.4.4.21-9-8.js b/test/built-ins/Array/prototype/reduce/15.4.4.21-9-8.js
index d2b39698015a7a890ca970a8dacf6debf43da677..66dd77475c86f4edfc2952febce74130c98c72f0 100644
--- a/test/built-ins/Array/prototype/reduce/15.4.4.21-9-8.js
+++ b/test/built-ins/Array/prototype/reduce/15.4.4.21-9-8.js
@@ -4,11 +4,8 @@
 /*---
 es5id: 15.4.4.21-9-8
 description: Array.prototype.reduce - no observable effects occur if 'len' is 0
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
-
         var accessed = false;
         var callbackAccessed = false;
         function callbackfn() {
@@ -26,6 +23,6 @@ function testcase() {
         });
 
         Array.prototype.reduce.call(obj, function () { }, "initialValue");
-        return !accessed && !callbackAccessed;
-    }
-runTestCase(testcase);
+
+assert.sameValue(accessed, false, 'accessed');
+assert.sameValue(callbackAccessed, false, 'callbackAccessed');
diff --git a/test/built-ins/Array/prototype/reduce/15.4.4.21-9-9.js b/test/built-ins/Array/prototype/reduce/15.4.4.21-9-9.js
index bd97d824f393e02a744f1c855ac43bc15de21805..ccf92a2d6381d5158c2c317a6dbfe7b5f0a5cb4a 100644
--- a/test/built-ins/Array/prototype/reduce/15.4.4.21-9-9.js
+++ b/test/built-ins/Array/prototype/reduce/15.4.4.21-9-9.js
@@ -6,10 +6,8 @@ es5id: 15.4.4.21-9-9
 description: >
     Array.prototype.reduce - modifications to length don't change
     number of iterations in step 9
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
         var called = 0;
         function callbackfn(accum, val, idx, obj) {
             called++;
@@ -27,6 +25,5 @@ function testcase() {
 
         var newAccum = arr.reduce(callbackfn, "initialValue");
 
-        return newAccum === "initialValue01" && called === 2;
-    }
-runTestCase(testcase);
+assert.sameValue(newAccum, "initialValue01", 'newAccum');
+assert.sameValue(called, 2, 'called');
diff --git a/test/built-ins/Array/prototype/reduce/15.4.4.21-9-b-1.js b/test/built-ins/Array/prototype/reduce/15.4.4.21-9-b-1.js
index 5b50b0226514d5de2f0b843773be13969ec2b2a0..4a799049825be5182102245ba5cdb59291014ac8 100644
--- a/test/built-ins/Array/prototype/reduce/15.4.4.21-9-b-1.js
+++ b/test/built-ins/Array/prototype/reduce/15.4.4.21-9-b-1.js
@@ -6,19 +6,12 @@ es5id: 15.4.4.21-9-b-1
 description: >
     Array.prototype.reduce returns initialvalue when Array is empty
     and initialValue is present
-includes: [runTestCase.js]
 ---*/
 
-function testcase() { 
- 
   function callbackfn(prevVal, curVal, idx, obj)
   {
   }
 
   var arr = new Array(10);
 
-  if(arr.reduce(callbackfn,5) === 5)
-      return true;  
-
- }
-runTestCase(testcase);
+assert.sameValue(arr.reduce(callbackfn,5), 5, 'arr.reduce(callbackfn,5)');
diff --git a/test/built-ins/Array/prototype/reduce/15.4.4.21-9-b-14.js b/test/built-ins/Array/prototype/reduce/15.4.4.21-9-b-14.js
index 7eb49ee7903f626ad8f8d4f12b858f2bf1041548..3ec5f1161867abfcb7bbbfe4b0d21d5a9ae11be5 100644
--- a/test/built-ins/Array/prototype/reduce/15.4.4.21-9-b-14.js
+++ b/test/built-ins/Array/prototype/reduce/15.4.4.21-9-b-14.js
@@ -6,11 +6,8 @@ es5id: 15.4.4.21-9-b-14
 description: >
     Array.prototype.reduce - decreasing length of array in step 8
     causes deleted index property not to be visited
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
-
         var accessed = false;
         var testResult = true;
 
@@ -33,6 +30,5 @@ function testcase() {
 
         arr.reduce(callbackfn);
 
-        return testResult && accessed;
-    }
-runTestCase(testcase);
+assert(testResult, 'testResult !== true');
+assert(accessed, 'accessed !== true');
diff --git a/test/built-ins/Array/prototype/reduce/15.4.4.21-9-b-16.js b/test/built-ins/Array/prototype/reduce/15.4.4.21-9-b-16.js
index 9737b81204ba93f5a562fb7b81fc49bea2bec5f3..880948afe43bf14f8e5519e95d503ffbcc508639 100644
--- a/test/built-ins/Array/prototype/reduce/15.4.4.21-9-b-16.js
+++ b/test/built-ins/Array/prototype/reduce/15.4.4.21-9-b-16.js
@@ -7,11 +7,8 @@ description: >
     Array.prototype.reduce - decreasing length of array in step 8 does
     not delete non-configurable properties
 flags: [noStrict]
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
-
         var testResult = false;
 
         function callbackfn(accum, val, idx, obj) {
@@ -39,6 +36,4 @@ function testcase() {
 
         arr.reduce(callbackfn);
 
-        return testResult;
-    }
-runTestCase(testcase);
+assert(testResult, 'testResult !== true');
diff --git a/test/built-ins/Array/prototype/reduce/15.4.4.21-9-b-17.js b/test/built-ins/Array/prototype/reduce/15.4.4.21-9-b-17.js
index e86b5b32bfa9f429fdeb7fa48d6850fb37f74c0f..d113edf6590cf646dbf03798430ccd43769987ea 100644
--- a/test/built-ins/Array/prototype/reduce/15.4.4.21-9-b-17.js
+++ b/test/built-ins/Array/prototype/reduce/15.4.4.21-9-b-17.js
@@ -6,11 +6,8 @@ es5id: 15.4.4.21-9-b-17
 description: >
     Array.prototype.reduce - properties added into own object are
     visited on an Array-like object
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
-
         var testResult = false;
 
         function callbackfn(accum, val, idx, obj) {
@@ -35,6 +32,5 @@ function testcase() {
         });
 
         Array.prototype.reduce.call(obj, callbackfn, "initialValue");
-        return testResult;
-    }
-runTestCase(testcase);
+
+assert(testResult, 'testResult !== true');
diff --git a/test/built-ins/Array/prototype/reduce/15.4.4.21-9-b-18.js b/test/built-ins/Array/prototype/reduce/15.4.4.21-9-b-18.js
index e1c0178ed50a3e024d68a3922fab414b28d3f262..fdd1232befe8125b9ab76bbcb2cacb0c79938b21 100644
--- a/test/built-ins/Array/prototype/reduce/15.4.4.21-9-b-18.js
+++ b/test/built-ins/Array/prototype/reduce/15.4.4.21-9-b-18.js
@@ -6,11 +6,8 @@ es5id: 15.4.4.21-9-b-18
 description: >
     Array.prototype.reduce - properties added into own object are
     visited on an Array
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
-
         var testResult = false;
 
         function callbackfn(accum, val, idx, obj) {
@@ -35,6 +32,5 @@ function testcase() {
         });
 
         arr.reduce(callbackfn, "initialValue");
-        return testResult;
-    }
-runTestCase(testcase);
+
+assert(testResult, 'testResult !== true');
diff --git a/test/built-ins/Array/prototype/reduce/15.4.4.21-9-b-2.js b/test/built-ins/Array/prototype/reduce/15.4.4.21-9-b-2.js
index fb21cd6686f6ce4693778e83ea532b9b2a5fb55a..76ec6be5a167392acca3cadf76c9afce70b1ee9e 100644
--- a/test/built-ins/Array/prototype/reduce/15.4.4.21-9-b-2.js
+++ b/test/built-ins/Array/prototype/reduce/15.4.4.21-9-b-2.js
@@ -6,11 +6,8 @@ es5id: 15.4.4.21-9-b-2
 description: >
     Array.prototype.reduce - added properties in step 2 are visible
     here
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
-
         var testResult = false;
 
         function callbackfn(accum, val, idx, obj) {
@@ -31,6 +28,4 @@ function testcase() {
 
         Array.prototype.reduce.call(obj, callbackfn, "initialValue");
 
-        return testResult;
-    }
-runTestCase(testcase);
+assert(testResult, 'testResult !== true');
diff --git a/test/built-ins/Array/prototype/reduce/15.4.4.21-9-b-21.js b/test/built-ins/Array/prototype/reduce/15.4.4.21-9-b-21.js
index 1df76b4a828d1f674ba9f0a0f47fbd903c026313..9f622a0bca68829e15d1134902b8a5dda7cb82de 100644
--- a/test/built-ins/Array/prototype/reduce/15.4.4.21-9-b-21.js
+++ b/test/built-ins/Array/prototype/reduce/15.4.4.21-9-b-21.js
@@ -6,11 +6,8 @@ es5id: 15.4.4.21-9-b-21
 description: >
     Array.prototype.reduce - deleting own property causes deleted
     index property not to be visited on an Array-like object
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
-
         var accessed = false;
         var testResult = true;
 
@@ -39,6 +36,6 @@ function testcase() {
         });
 
         Array.prototype.reduce.call(obj, callbackfn, "initialValue");
-        return testResult && accessed;
-    }
-runTestCase(testcase);
+
+assert(testResult, 'testResult !== true');
+assert(accessed, 'accessed !== true');
diff --git a/test/built-ins/Array/prototype/reduce/15.4.4.21-9-b-22.js b/test/built-ins/Array/prototype/reduce/15.4.4.21-9-b-22.js
index dd7b9f67bb18ed544400be79e9b0debeb5a7fa47..d276ff1f45b15058434b1a0e241b266169a6811c 100644
--- a/test/built-ins/Array/prototype/reduce/15.4.4.21-9-b-22.js
+++ b/test/built-ins/Array/prototype/reduce/15.4.4.21-9-b-22.js
@@ -6,11 +6,8 @@ es5id: 15.4.4.21-9-b-22
 description: >
     Array.prototype.reduce - deleting own property causes deleted
     index property not to be visited on an Array
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
-
         var accessed = false;
         var testResult = true;
 
@@ -39,6 +36,6 @@ function testcase() {
         });
 
         arr.reduce(callbackfn, "initialValue");
-        return testResult && accessed;
-    }
-runTestCase(testcase);
+
+assert(testResult, 'testResult !== true');
+assert(accessed, 'accessed !== true');
diff --git a/test/built-ins/Array/prototype/reduce/15.4.4.21-9-b-27.js b/test/built-ins/Array/prototype/reduce/15.4.4.21-9-b-27.js
index 3f5ff89337e923a7180f5079066a80adffedbc41..fa0595364af5c4f353b7479df12a1172a2f38c1e 100644
--- a/test/built-ins/Array/prototype/reduce/15.4.4.21-9-b-27.js
+++ b/test/built-ins/Array/prototype/reduce/15.4.4.21-9-b-27.js
@@ -6,11 +6,8 @@ es5id: 15.4.4.21-9-b-27
 description: >
     Array.prototype.reduce - decreasing length of array causes deleted
     index property not to be visited
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
-
         var accessed = false;
         var testResult = true;
 
@@ -33,6 +30,5 @@ function testcase() {
 
         arr.reduce(callbackfn, "initialValue");
 
-        return testResult && accessed;
-    }
-runTestCase(testcase);
+assert(testResult, 'testResult !== true');
+assert(accessed, 'accessed !== true');
diff --git a/test/built-ins/Array/prototype/reduce/15.4.4.21-9-b-29.js b/test/built-ins/Array/prototype/reduce/15.4.4.21-9-b-29.js
index 83ef0cbc82ea44d294d6df098c5ba45ae2fe625c..4a1d05875546b8fb932ae3e3ffe8597df7942ce9 100644
--- a/test/built-ins/Array/prototype/reduce/15.4.4.21-9-b-29.js
+++ b/test/built-ins/Array/prototype/reduce/15.4.4.21-9-b-29.js
@@ -7,11 +7,8 @@ description: >
     Array.prototype.reduce - decreasing length of array does not
     delete non-configurable properties
 flags: [noStrict]
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
-
         var testResult = false;
 
         function callbackfn(accum, val, idx, obj) {
@@ -39,6 +36,4 @@ function testcase() {
 
         arr.reduce(callbackfn, "initialValue");
 
-        return testResult;
-    }
-runTestCase(testcase);
+assert(testResult, 'testResult !== true');
diff --git a/test/built-ins/Array/prototype/reduce/15.4.4.21-9-b-3.js b/test/built-ins/Array/prototype/reduce/15.4.4.21-9-b-3.js
index 7d36a853a8f8f7d2d8d7fd8215d65d09a822d0de..e25a0c8bcfade93c3de7ec29b622f931958e4feb 100644
--- a/test/built-ins/Array/prototype/reduce/15.4.4.21-9-b-3.js
+++ b/test/built-ins/Array/prototype/reduce/15.4.4.21-9-b-3.js
@@ -6,11 +6,8 @@ es5id: 15.4.4.21-9-b-3
 description: >
     Array.prototype.reduce - deleted properties in step 2 are visible
     here
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
-
         var accessed = false;
         var testResult = true;
 
@@ -33,6 +30,5 @@ function testcase() {
 
         Array.prototype.reduce.call(obj, callbackfn, "initialValue");
 
-        return accessed && testResult;
-    }
-runTestCase(testcase);
+assert(accessed, 'accessed !== true');
+assert(testResult, 'testResult !== true');
diff --git a/test/built-ins/Array/prototype/reduce/15.4.4.21-9-b-4.js b/test/built-ins/Array/prototype/reduce/15.4.4.21-9-b-4.js
index 21d48f2cba74a79768e0c7ddb3fa6cedc3dce69c..eb1a8e37c11bd40381623aca6ebe78a4fb63c469 100644
--- a/test/built-ins/Array/prototype/reduce/15.4.4.21-9-b-4.js
+++ b/test/built-ins/Array/prototype/reduce/15.4.4.21-9-b-4.js
@@ -6,11 +6,8 @@ es5id: 15.4.4.21-9-b-4
 description: >
     Array.prototype.reduce - properties added into own object in step
     8 are visited on an Array-like object
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
-
         var testResult = false;
 
         function callbackfn(accum, val, idx, obj) {
@@ -35,6 +32,5 @@ function testcase() {
         });
 
         Array.prototype.reduce.call(obj, callbackfn);
-        return testResult;
-    }
-runTestCase(testcase);
+
+assert(testResult, 'testResult !== true');
diff --git a/test/built-ins/Array/prototype/reduce/15.4.4.21-9-b-5.js b/test/built-ins/Array/prototype/reduce/15.4.4.21-9-b-5.js
index 71e49118e67db2ab0c2a0b9382f1fff55348f5b0..b045c3346fd01ab968235530507237696c9415f5 100644
--- a/test/built-ins/Array/prototype/reduce/15.4.4.21-9-b-5.js
+++ b/test/built-ins/Array/prototype/reduce/15.4.4.21-9-b-5.js
@@ -6,11 +6,8 @@ es5id: 15.4.4.21-9-b-5
 description: >
     Array.prototype.reduce - properties added into own object in step
     8 are visited on an Array
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
-
         var testResult = false;
 
         function callbackfn(accum, val, idx, obj) {
@@ -35,6 +32,5 @@ function testcase() {
         });
 
         arr.reduce(callbackfn);
-        return testResult;
-    }
-runTestCase(testcase);
+
+assert(testResult, 'testResult !== true');
diff --git a/test/built-ins/Array/prototype/reduce/15.4.4.21-9-b-8.js b/test/built-ins/Array/prototype/reduce/15.4.4.21-9-b-8.js
index 5ff818e4f414ac99a3f269a0124d0ba22446a91f..c9ae451a90739fb550418bc7799c8d4e27ab9595 100644
--- a/test/built-ins/Array/prototype/reduce/15.4.4.21-9-b-8.js
+++ b/test/built-ins/Array/prototype/reduce/15.4.4.21-9-b-8.js
@@ -6,11 +6,8 @@ es5id: 15.4.4.21-9-b-8
 description: >
     Array.prototype.reduce - deleting own property in step 8 causes
     deleted index property not to be visited on an Array-like object
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
-
         var accessed = false;
         var testResult = true;
 
@@ -39,6 +36,6 @@ function testcase() {
         });
 
         Array.prototype.reduce.call(obj, callbackfn);
-        return testResult && accessed;
-    }
-runTestCase(testcase);
+
+assert(testResult, 'testResult !== true');
+assert(accessed, 'accessed !== true');
diff --git a/test/built-ins/Array/prototype/reduce/15.4.4.21-9-b-9.js b/test/built-ins/Array/prototype/reduce/15.4.4.21-9-b-9.js
index fd8d2ab0ef15cac61de52d0c25211a7239ba6f0e..38291cd271739fa9eba1ebd27da118078ffe8c7d 100644
--- a/test/built-ins/Array/prototype/reduce/15.4.4.21-9-b-9.js
+++ b/test/built-ins/Array/prototype/reduce/15.4.4.21-9-b-9.js
@@ -6,11 +6,8 @@ es5id: 15.4.4.21-9-b-9
 description: >
     Array.prototype.reduce - deleting own property in step 8 causes
     deleted index property not to be visited on an Array
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
-
         var accessed = false;
         var testResult = true;
 
@@ -32,6 +29,6 @@ function testcase() {
         });
 
         arr.reduce(callbackfn);
-        return testResult && accessed;
-    }
-runTestCase(testcase);
+
+assert(testResult, 'testResult !== true');
+assert(accessed, 'accessed !== true');
diff --git a/test/built-ins/Array/prototype/reduce/15.4.4.21-9-c-1.js b/test/built-ins/Array/prototype/reduce/15.4.4.21-9-c-1.js
index aa2bfbfb36821c07d421e724f2203c979b1a4c9f..2c5673ea998019a1d18b5767891a58f63bd7794a 100644
--- a/test/built-ins/Array/prototype/reduce/15.4.4.21-9-c-1.js
+++ b/test/built-ins/Array/prototype/reduce/15.4.4.21-9-c-1.js
@@ -6,11 +6,8 @@ es5id: 15.4.4.21-9-c-1
 description: >
     Array.prototype.reduce - callbackfn not called for indexes never
     been assigned values
-includes: [runTestCase.js]
 ---*/
 
-function testcase() { 
- 
   var callCnt = 0;
   function callbackfn(prevVal, curVal, idx, obj)
   {
@@ -20,7 +17,6 @@ function testcase() {
 
   var arr = new Array(10);
   arr[0] = arr[1] = undefined; //explicitly assigning a value
-  if( arr.reduce(callbackfn) === undefined && callCnt === 1)
-    return true;    
- }
-runTestCase(testcase);
+
+assert.sameValue(arr.reduce(callbackfn), undefined, 'arr.reduce(callbackfn)');
+assert.sameValue(callCnt, 1, 'callCnt');
diff --git a/test/built-ins/Array/prototype/reduce/15.4.4.21-9-c-i-1.js b/test/built-ins/Array/prototype/reduce/15.4.4.21-9-c-i-1.js
index edbce72d25e1d698753b57a66ba309642561c68c..c5d969c15d64fd62dd0305511ecb7ae700d88a3d 100644
--- a/test/built-ins/Array/prototype/reduce/15.4.4.21-9-c-i-1.js
+++ b/test/built-ins/Array/prototype/reduce/15.4.4.21-9-c-i-1.js
@@ -6,11 +6,8 @@ es5id: 15.4.4.21-9-c-i-1
 description: >
     Array.prototype.reduce - element to be retrieved is own data
     property on an Array-like object
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
-
         var testResult = false;
         var initialValue = 0;
         function callbackfn(prevVal, curVal, idx, obj) {
@@ -21,6 +18,5 @@ function testcase() {
 
         var obj = { 0: 0, 1: 1, 2: 2, length: 2 };
         Array.prototype.reduce.call(obj, callbackfn, initialValue);
-        return testResult;
-    }
-runTestCase(testcase);
+
+assert(testResult, 'testResult !== true');
diff --git a/test/built-ins/Array/prototype/reduce/15.4.4.21-9-c-i-10.js b/test/built-ins/Array/prototype/reduce/15.4.4.21-9-c-i-10.js
index f1d1e3436d51e32b048f46f89775049ca2c47ab0..5abbe780af46f7b6912bf1cbff4fcb00008c44b3 100644
--- a/test/built-ins/Array/prototype/reduce/15.4.4.21-9-c-i-10.js
+++ b/test/built-ins/Array/prototype/reduce/15.4.4.21-9-c-i-10.js
@@ -6,11 +6,8 @@ es5id: 15.4.4.21-9-c-i-10
 description: >
     Array.prototype.reduce - element to be retrieved is own accessor
     property on an Array
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
-
         var testResult = false;
         var initialValue = 0;
         function callbackfn(prevVal, curVal, idx, obj) {
@@ -29,6 +26,5 @@ function testcase() {
         });
 
         arr.reduce(callbackfn, initialValue);
-        return testResult;
-    }
-runTestCase(testcase);
+
+assert(testResult, 'testResult !== true');
diff --git a/test/built-ins/Array/prototype/reduce/15.4.4.21-9-c-i-11.js b/test/built-ins/Array/prototype/reduce/15.4.4.21-9-c-i-11.js
index 875342dd9baf60ffe8caeb2b5ba0c63331b3985f..54332b569c7d3c6f88ec88b8d9ca8eda57d6f0e9 100644
--- a/test/built-ins/Array/prototype/reduce/15.4.4.21-9-c-i-11.js
+++ b/test/built-ins/Array/prototype/reduce/15.4.4.21-9-c-i-11.js
@@ -7,11 +7,8 @@ description: >
     Array.prototype.reduce - element to be retrieved is own accessor
     property that overrides an inherited data property on an
     Array-like object
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
-
         var testResult = false;
         var initialValue = 0;
         function callbackfn(prevVal, curVal, idx, obj) {
@@ -36,6 +33,5 @@ function testcase() {
         });
 
         Array.prototype.reduce.call(child, callbackfn, initialValue);
-        return testResult;
-    }
-runTestCase(testcase);
+
+assert(testResult, 'testResult !== true');
diff --git a/test/built-ins/Array/prototype/reduce/15.4.4.21-9-c-i-13.js b/test/built-ins/Array/prototype/reduce/15.4.4.21-9-c-i-13.js
index befe7caf4abf1794176eaaaa1fa0398c6e108414..2faa0cca6f04c9719535f82d63c3a57ce30c243f 100644
--- a/test/built-ins/Array/prototype/reduce/15.4.4.21-9-c-i-13.js
+++ b/test/built-ins/Array/prototype/reduce/15.4.4.21-9-c-i-13.js
@@ -7,11 +7,8 @@ description: >
     Array.prototype.reduce - element to be retrieved is own accessor
     property that overrides an inherited accessor property on an
     Array-like object
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
-
         var testResult = false;
         var initialValue = 0;
         function callbackfn(prevVal, curVal, idx, obj) {
@@ -43,6 +40,5 @@ function testcase() {
         });
 
         Array.prototype.reduce.call(child, callbackfn, initialValue);
-        return testResult;
-    }
-runTestCase(testcase);
+
+assert(testResult, 'testResult !== true');
diff --git a/test/built-ins/Array/prototype/reduce/15.4.4.21-9-c-i-15.js b/test/built-ins/Array/prototype/reduce/15.4.4.21-9-c-i-15.js
index 01d48876ac77911649504dc19a82e88b3f8617af..54e70886e3d3bb61018c8189e1b239c845348375 100644
--- a/test/built-ins/Array/prototype/reduce/15.4.4.21-9-c-i-15.js
+++ b/test/built-ins/Array/prototype/reduce/15.4.4.21-9-c-i-15.js
@@ -6,11 +6,8 @@ es5id: 15.4.4.21-9-c-i-15
 description: >
     Array.prototype.reduce - element to be retrieved is inherited
     accessor property on an Array-like object
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
-
         var testResult = false;
         var initialValue = 0;
         function callbackfn(prevVal, curVal, idx, obj) {
@@ -35,6 +32,5 @@ function testcase() {
         child.length = 3;
 
         Array.prototype.reduce.call(child, callbackfn, initialValue);
-        return testResult;
-    }
-runTestCase(testcase);
+
+assert(testResult, 'testResult !== true');
diff --git a/test/built-ins/Array/prototype/reduce/15.4.4.21-9-c-i-17.js b/test/built-ins/Array/prototype/reduce/15.4.4.21-9-c-i-17.js
index b33016a898c1c1d46d932862235bb58fee92ce53..aaf664665ed0f3d15f139ca0bd91f4d044168a66 100644
--- a/test/built-ins/Array/prototype/reduce/15.4.4.21-9-c-i-17.js
+++ b/test/built-ins/Array/prototype/reduce/15.4.4.21-9-c-i-17.js
@@ -6,11 +6,8 @@ es5id: 15.4.4.21-9-c-i-17
 description: >
     Array.prototype.reduce - element to be retrieved is own accessor
     property without a get function on an Array-like object
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
-
         var testResult = false;
         var initialValue = 0;
         function callbackfn(prevVal, curVal, idx, obj) {
@@ -27,6 +24,5 @@ function testcase() {
         });
 
         Array.prototype.reduce.call(obj, callbackfn, initialValue);
-        return testResult;
-    }
-runTestCase(testcase);
+
+assert(testResult, 'testResult !== true');
diff --git a/test/built-ins/Array/prototype/reduce/15.4.4.21-9-c-i-18.js b/test/built-ins/Array/prototype/reduce/15.4.4.21-9-c-i-18.js
index 525faa40dad08c348687435c4bc49c4c582ad9e3..a4f82d024cb7cfc367dccbc9a32a148649c58ab0 100644
--- a/test/built-ins/Array/prototype/reduce/15.4.4.21-9-c-i-18.js
+++ b/test/built-ins/Array/prototype/reduce/15.4.4.21-9-c-i-18.js
@@ -6,11 +6,8 @@ es5id: 15.4.4.21-9-c-i-18
 description: >
     Array.prototype.reduce - element to be retrieved is own accessor
     property without a get function on an Array
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
-
         var testResult = false;
         var initialValue = 0;
         function callbackfn(prevVal, curVal, idx, obj) {
@@ -27,7 +24,5 @@ function testcase() {
         });
 
         arr.reduce(callbackfn, initialValue);
-        return testResult;
-         
-    }
-runTestCase(testcase);
+
+assert(testResult, 'testResult !== true');
diff --git a/test/built-ins/Array/prototype/reduce/15.4.4.21-9-c-i-2.js b/test/built-ins/Array/prototype/reduce/15.4.4.21-9-c-i-2.js
index b37f46f1321e8b91bfe00dd7fc2b77fc7d47744f..5e6915028cb6eb78df0d6626f48d811cb2bbd8bc 100644
--- a/test/built-ins/Array/prototype/reduce/15.4.4.21-9-c-i-2.js
+++ b/test/built-ins/Array/prototype/reduce/15.4.4.21-9-c-i-2.js
@@ -6,11 +6,8 @@ es5id: 15.4.4.21-9-c-i-2
 description: >
     Array.prototype.reduce - element to be retrieved is own data
     property on an Array
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
-
         var testResult = false;
         var initialValue = 0;
         function callbackfn(prevVal, curVal, idx, obj) {
@@ -21,6 +18,5 @@ function testcase() {
 
         var arr = [0, 1];
         arr.reduce(callbackfn, initialValue);
-        return testResult;
-    }
-runTestCase(testcase);
+
+assert(testResult, 'testResult !== true');
diff --git a/test/built-ins/Array/prototype/reduce/15.4.4.21-9-c-i-21.js b/test/built-ins/Array/prototype/reduce/15.4.4.21-9-c-i-21.js
index db05c388b18250dcb6077aff0d82708178119e40..350e6c04e85a8ca34acc5eebc86e9973179044c9 100644
--- a/test/built-ins/Array/prototype/reduce/15.4.4.21-9-c-i-21.js
+++ b/test/built-ins/Array/prototype/reduce/15.4.4.21-9-c-i-21.js
@@ -6,11 +6,8 @@ es5id: 15.4.4.21-9-c-i-21
 description: >
     Array.prototype.reduce - element to be retrieved is inherited
     accessor property without a get function on an Array-like object
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
-
         var testResult = false;
         var initialValue = 0;
         function callbackfn(prevVal, curVal, idx, obj) {
@@ -33,6 +30,5 @@ function testcase() {
         child.length = 3;
 
         Array.prototype.reduce.call(child, callbackfn, initialValue);
-        return testResult;
-    }
-runTestCase(testcase);
+
+assert(testResult, 'testResult !== true');
diff --git a/test/built-ins/Array/prototype/reduce/15.4.4.21-9-c-i-25.js b/test/built-ins/Array/prototype/reduce/15.4.4.21-9-c-i-25.js
index 0cbb4cd844093381573c6c8654985d207f93a124..6ae39b9677a5b040779e3efbbc63a05d2c7b6c3d 100644
--- a/test/built-ins/Array/prototype/reduce/15.4.4.21-9-c-i-25.js
+++ b/test/built-ins/Array/prototype/reduce/15.4.4.21-9-c-i-25.js
@@ -7,11 +7,8 @@ description: >
     Array.prototype.reduce - This object is the Arguments object which
     implements its own property get method (number of arguments is
     less than number of parameters)
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
-
         var testResult = false;
         var initialValue = 0;
         function callbackfn(prevVal, curVal, idx, obj) {
@@ -25,6 +22,5 @@ function testcase() {
         };
 
         func(0, 1);
-        return testResult;
-    }
-runTestCase(testcase);
+
+assert(testResult, 'testResult !== true');
diff --git a/test/built-ins/Array/prototype/reduce/15.4.4.21-9-c-i-26.js b/test/built-ins/Array/prototype/reduce/15.4.4.21-9-c-i-26.js
index 82999096b32b7dd8bbb61ce98a436a44c29047a3..fa9b3d46c7b3f4933c7a320d8a7f54f979a02593 100644
--- a/test/built-ins/Array/prototype/reduce/15.4.4.21-9-c-i-26.js
+++ b/test/built-ins/Array/prototype/reduce/15.4.4.21-9-c-i-26.js
@@ -7,11 +7,8 @@ description: >
     Array.prototype.reduce - This object is the Arguments object which
     implements its own property get method (number of arguments equals
     number of parameters)
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
-
         var testResult = false;
         var initialValue = 0;
         function callbackfn(prevVal, curVal, idx, obj) {
@@ -25,6 +22,5 @@ function testcase() {
         };
 
         func(0, 1, 2);
-        return testResult;
-    }
-runTestCase(testcase);
+
+assert(testResult, 'testResult !== true');
diff --git a/test/built-ins/Array/prototype/reduce/15.4.4.21-9-c-i-27.js b/test/built-ins/Array/prototype/reduce/15.4.4.21-9-c-i-27.js
index c6616367712f22d1cd14ad5c1a3b62a091d28c62..bd13966d9ea8912bec88e5eecf2bf6c17f911b20 100644
--- a/test/built-ins/Array/prototype/reduce/15.4.4.21-9-c-i-27.js
+++ b/test/built-ins/Array/prototype/reduce/15.4.4.21-9-c-i-27.js
@@ -7,11 +7,8 @@ description: >
     Array.prototype.reduce - This object is the Arguments object which
     implements its own property get method (number of arguments is
     greater than number of parameters)
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
-
         var testResult = false;
         var initialValue = 0;
         function callbackfn(prevVal, curVal, idx, obj) {
@@ -25,6 +22,5 @@ function testcase() {
         };
 
         func(0, 1, 2, 3);
-        return testResult;
-    }
-runTestCase(testcase);
+
+assert(testResult, 'testResult !== true');
diff --git a/test/built-ins/Array/prototype/reduce/15.4.4.21-9-c-i-28.js b/test/built-ins/Array/prototype/reduce/15.4.4.21-9-c-i-28.js
index 0795014a517f61504744fac54271948563723630..59459ffa6fb326461842a5c58cf558e3054fc72b 100644
--- a/test/built-ins/Array/prototype/reduce/15.4.4.21-9-c-i-28.js
+++ b/test/built-ins/Array/prototype/reduce/15.4.4.21-9-c-i-28.js
@@ -6,11 +6,8 @@ es5id: 15.4.4.21-9-c-i-28
 description: >
     Array.prototype.reduce - applied to String object, which
     implements its own property get method
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
-
         var testResult = false;
         var initialValue = 0;
         function callbackfn(prevVal, curVal, idx, obj) {
@@ -22,7 +19,5 @@ function testcase() {
         var str = new String("012");
      
         Array.prototype.reduce.call(str, callbackfn, initialValue);
-        return testResult;
-        
-    }
-runTestCase(testcase);
+
+assert(testResult, 'testResult !== true');
diff --git a/test/built-ins/Array/prototype/reduce/15.4.4.21-9-c-i-29.js b/test/built-ins/Array/prototype/reduce/15.4.4.21-9-c-i-29.js
index c0d326e4fc09338914150a40b734061b4f74c060..eb4d19cfe9670d797912900a942acdea0929ff12 100644
--- a/test/built-ins/Array/prototype/reduce/15.4.4.21-9-c-i-29.js
+++ b/test/built-ins/Array/prototype/reduce/15.4.4.21-9-c-i-29.js
@@ -6,11 +6,8 @@ es5id: 15.4.4.21-9-c-i-29
 description: >
     Array.prototype.reduce - applied to Function object which
     implements its own property get method
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
-
         var testResult = false;
         var initialValue = 0;
         function callbackfn(prevVal, curVal, idx, obj) {
@@ -28,6 +25,5 @@ function testcase() {
         obj[3] = 3;
 
         Array.prototype.reduce.call(obj, callbackfn, initialValue);
-        return testResult;
-    }
-runTestCase(testcase);
+
+assert(testResult, 'testResult !== true');
diff --git a/test/built-ins/Array/prototype/reduce/15.4.4.21-9-c-i-3.js b/test/built-ins/Array/prototype/reduce/15.4.4.21-9-c-i-3.js
index 9ad289384be09edd6aba8750926a03b3907f6278..44f136d10bc1b1d64e9a3a2bf39f669fb05ad332 100644
--- a/test/built-ins/Array/prototype/reduce/15.4.4.21-9-c-i-3.js
+++ b/test/built-ins/Array/prototype/reduce/15.4.4.21-9-c-i-3.js
@@ -7,11 +7,8 @@ description: >
     Array.prototype.reduce - element to be retrieved is own data
     property that overrides an inherited data property on an
     Array-like object
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
-
         var testResult = false;
         var initialValue = 0;
         function callbackfn(prevVal, curVal, idx, obj) {
@@ -30,7 +27,5 @@ function testcase() {
         child.length = 3;
 
         Array.prototype.reduce.call(child, callbackfn, initialValue);
-        return testResult;
 
-    }
-runTestCase(testcase);
+assert(testResult, 'testResult !== true');
diff --git a/test/built-ins/Array/prototype/reduce/15.4.4.21-9-c-i-30.js b/test/built-ins/Array/prototype/reduce/15.4.4.21-9-c-i-30.js
index a7d94e4f3ef173588ec7e3bbe7b013ecd514b382..da35414d3f3572e39b88a77f8b0a45fafde32fd7 100644
--- a/test/built-ins/Array/prototype/reduce/15.4.4.21-9-c-i-30.js
+++ b/test/built-ins/Array/prototype/reduce/15.4.4.21-9-c-i-30.js
@@ -6,11 +6,8 @@ es5id: 15.4.4.21-9-c-i-30
 description: >
     Array.prototype.reduce - element changed by getter on previous
     iterations is observed on an Array
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
-
         var testResult = false;
         var initialValue = 0;
         function callbackfn(prevVal, curVal, idx, obj) {
@@ -42,6 +39,5 @@ function testcase() {
         });
 
         arr.reduce(callbackfn, initialValue);
-        return testResult;
-    }
-runTestCase(testcase);
+
+assert(testResult, 'testResult !== true');
diff --git a/test/built-ins/Array/prototype/reduce/15.4.4.21-9-c-i-31.js b/test/built-ins/Array/prototype/reduce/15.4.4.21-9-c-i-31.js
index 1bcce7f114b68b08dce7aa7e372f56efeb1dee83..852b4289e98ef510629787f8a5c32a205fcb4075 100644
--- a/test/built-ins/Array/prototype/reduce/15.4.4.21-9-c-i-31.js
+++ b/test/built-ins/Array/prototype/reduce/15.4.4.21-9-c-i-31.js
@@ -6,11 +6,8 @@ es5id: 15.4.4.21-9-c-i-31
 description: >
     Array.prototype.reduce - element changed by getter on previous
     iterations is observed on an Array-like object
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
-
         var testResult = false;
         var initialValue = 0;
         function callbackfn(prevVal, curVal, idx, obj) {
@@ -42,7 +39,5 @@ function testcase() {
         });
 
         Array.prototype.reduce.call(obj, callbackfn, initialValue);
-        return testResult;
 
-    }
-runTestCase(testcase);
+assert(testResult, 'testResult !== true');
diff --git a/test/built-ins/Array/prototype/reduce/15.4.4.21-9-c-i-5.js b/test/built-ins/Array/prototype/reduce/15.4.4.21-9-c-i-5.js
index f8e08c1a977be52a8ed1b92b9213cacb8454d5f7..cacb0e36b6342216ec1ed84885175d4a2c9a7eeb 100644
--- a/test/built-ins/Array/prototype/reduce/15.4.4.21-9-c-i-5.js
+++ b/test/built-ins/Array/prototype/reduce/15.4.4.21-9-c-i-5.js
@@ -7,11 +7,8 @@ description: >
     Array.prototype.reduce - element to be retrieved is own data
     property that overrides an inherited accessor property on an
     Array-like object
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
-
         var testResult = false;
         var initialValue = 0;
         function callbackfn(prevVal, curVal, idx, obj) {
@@ -43,6 +40,5 @@ function testcase() {
         child[1] = "1";
 
         Array.prototype.reduce.call(child, callbackfn, initialValue);
-        return testResult;
-    }
-runTestCase(testcase);
+
+assert(testResult, 'testResult !== true');
diff --git a/test/built-ins/Array/prototype/reduce/15.4.4.21-9-c-i-7.js b/test/built-ins/Array/prototype/reduce/15.4.4.21-9-c-i-7.js
index 4e0dbb299992474d5add4b14f4c6627a35bd433c..90e6a5677454d9c50b884c7268b3a10241df90c1 100644
--- a/test/built-ins/Array/prototype/reduce/15.4.4.21-9-c-i-7.js
+++ b/test/built-ins/Array/prototype/reduce/15.4.4.21-9-c-i-7.js
@@ -6,11 +6,8 @@ es5id: 15.4.4.21-9-c-i-7
 description: >
     Array.prototype.reduce - element to be retrieved is inherited data
     property on an Array-like object
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
-
         var testResult = false;
         var initialValue = 0;
         function callbackfn(prevVal, curVal, idx, obj) {
@@ -27,6 +24,5 @@ function testcase() {
         child.length = 3;
 
         Array.prototype.reduce.call(child, callbackfn, initialValue);
-        return testResult;
-    }
-runTestCase(testcase);
+
+assert(testResult, 'testResult !== true');
diff --git a/test/built-ins/Array/prototype/reduce/15.4.4.21-9-c-i-9.js b/test/built-ins/Array/prototype/reduce/15.4.4.21-9-c-i-9.js
index 86c84f0cae66f6cf10807480b3c3afbd87b9c3b0..a7f92f8b693419939b746638f06fdf2d1891caa0 100644
--- a/test/built-ins/Array/prototype/reduce/15.4.4.21-9-c-i-9.js
+++ b/test/built-ins/Array/prototype/reduce/15.4.4.21-9-c-i-9.js
@@ -6,11 +6,8 @@ es5id: 15.4.4.21-9-c-i-9
 description: >
     Array.prototype.reduce - element to be retrieved is own accessor
     property on an Array-like object
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
-
         var testResult = false;
         var initialValue = 0;
         function callbackfn(prevVal, curVal, idx, obj) {
@@ -28,7 +25,5 @@ function testcase() {
         });
 
         Array.prototype.reduce.call(obj, callbackfn, initialValue);
-        return testResult;
 
-    }
-runTestCase(testcase);
+assert(testResult, 'testResult !== true');
diff --git a/test/built-ins/Array/prototype/reduce/15.4.4.21-9-c-ii-1.js b/test/built-ins/Array/prototype/reduce/15.4.4.21-9-c-ii-1.js
index 3a96b3f729412dbb5d209d3044275834c0e1434e..18fe4e63c000fcce1a4f058270e00636f38ed1ae 100644
--- a/test/built-ins/Array/prototype/reduce/15.4.4.21-9-c-ii-1.js
+++ b/test/built-ins/Array/prototype/reduce/15.4.4.21-9-c-ii-1.js
@@ -6,11 +6,8 @@ es5id: 15.4.4.21-9-c-ii-1
 description: >
     Array.prototype.reduce - callbackfn called with correct parameters
     (initialvalue not passed)
-includes: [runTestCase.js]
 ---*/
 
-function testcase() { 
- 
   function callbackfn(prevVal, curVal, idx, obj)
   {
     if(idx > 0 && obj[idx] === curVal && obj[idx-1] === prevVal)
@@ -20,7 +17,5 @@ function testcase() {
   }
 
   var arr = [0,1,true,null,new Object(),"five"];
-  if( arr.reduce(callbackfn) === "five") 
-    return true;
- }
-runTestCase(testcase);
+
+assert.sameValue(arr.reduce(callbackfn), "five", 'arr.reduce(callbackfn)');
diff --git a/test/built-ins/Array/prototype/reduce/15.4.4.21-9-c-ii-10.js b/test/built-ins/Array/prototype/reduce/15.4.4.21-9-c-ii-10.js
index 68646c07cfbfa85108b02e0f334a7aade32caf6d..de1864bc90dcd4b74cc9d23925c4de84194e3a9b 100644
--- a/test/built-ins/Array/prototype/reduce/15.4.4.21-9-c-ii-10.js
+++ b/test/built-ins/Array/prototype/reduce/15.4.4.21-9-c-ii-10.js
@@ -6,17 +6,13 @@ es5id: 15.4.4.21-9-c-ii-10
 description: >
     Array.prototype.reduce - callbackfn is called with 1 formal
     parameter
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
-
         var result = false;
         function callbackfn(prevVal) {
             result = (prevVal === 1);
         }
 
         [11].reduce(callbackfn, 1);
-        return result;
-    }
-runTestCase(testcase);
+
+assert(result, 'result !== true');
diff --git a/test/built-ins/Array/prototype/reduce/15.4.4.21-9-c-ii-11.js b/test/built-ins/Array/prototype/reduce/15.4.4.21-9-c-ii-11.js
index 44070bdbe1af32721519b3a84d1628f429877461..33fb22ec30d030941068e21346c7ce8759833196 100644
--- a/test/built-ins/Array/prototype/reduce/15.4.4.21-9-c-ii-11.js
+++ b/test/built-ins/Array/prototype/reduce/15.4.4.21-9-c-ii-11.js
@@ -6,17 +6,13 @@ es5id: 15.4.4.21-9-c-ii-11
 description: >
     Array.prototype.reduce - callbackfn is called with 2 formal
     parameter
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
-
         var result = false;
         function callbackfn(prevVal, curVal) {
             result = (curVal > 10 && 1 === prevVal);
         }
 
         [11].reduce(callbackfn, 1);
-        return result;
-    }
-runTestCase(testcase);
+
+assert(result, 'result !== true');
diff --git a/test/built-ins/Array/prototype/reduce/15.4.4.21-9-c-ii-12.js b/test/built-ins/Array/prototype/reduce/15.4.4.21-9-c-ii-12.js
index 42407c4e443c13fe3a57c0c1eadfc63b608f1d4c..26b296baecfb245951ae9ff50f6b674d106526fc 100644
--- a/test/built-ins/Array/prototype/reduce/15.4.4.21-9-c-ii-12.js
+++ b/test/built-ins/Array/prototype/reduce/15.4.4.21-9-c-ii-12.js
@@ -6,17 +6,13 @@ es5id: 15.4.4.21-9-c-ii-12
 description: >
     Array.prototype.reduce - callbackfn is called with 3 formal
     parameter
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
-
         var result = false;
         function callbackfn(prevVal, curVal, idx) {
             result = (prevVal === 1 && arguments[3][idx] === curVal);
         }
 
         [11].reduce(callbackfn, 1);
-        return result;
-    }
-runTestCase(testcase);
+
+assert(result, 'result !== true');
diff --git a/test/built-ins/Array/prototype/reduce/15.4.4.21-9-c-ii-13.js b/test/built-ins/Array/prototype/reduce/15.4.4.21-9-c-ii-13.js
index ad0e086ce3bf810b31e1864f3f2766c3bbdfbf08..6f148ee490ddb174a3c0791183c26c19e1df3da4 100644
--- a/test/built-ins/Array/prototype/reduce/15.4.4.21-9-c-ii-13.js
+++ b/test/built-ins/Array/prototype/reduce/15.4.4.21-9-c-ii-13.js
@@ -6,17 +6,13 @@ es5id: 15.4.4.21-9-c-ii-13
 description: >
     Array.prototype.reduce - callbackfn is called with 4 formal
     parameter
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
-
         var result = false;
         function callbackfn(prevVal, curVal, idx, obj) {
             result = (prevVal === 1 && obj[idx] === curVal);
         }
 
         [11].reduce(callbackfn, 1);
-        return result;
-    }
-runTestCase(testcase);
+
+assert(result, 'result !== true');
diff --git a/test/built-ins/Array/prototype/reduce/15.4.4.21-9-c-ii-14.js b/test/built-ins/Array/prototype/reduce/15.4.4.21-9-c-ii-14.js
index 81c879421cc74b7ba00f9ae3b4be0676bd2e3893..f6ac6ab95221f902239af18019c89e37dc26dfc4 100644
--- a/test/built-ins/Array/prototype/reduce/15.4.4.21-9-c-ii-14.js
+++ b/test/built-ins/Array/prototype/reduce/15.4.4.21-9-c-ii-14.js
@@ -4,17 +4,13 @@
 /*---
 es5id: 15.4.4.21-9-c-ii-14
 description: Array.prototype.reduce - callbackfn that uses arguments
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
-
         var result = false;
         function callbackfn() {
             result = (arguments[0] === 1 && arguments[3][arguments[2]] === arguments[1]);
         }
 
         [11].reduce(callbackfn, 1);
-        return result;
-    }
-runTestCase(testcase);
+
+assert(result, 'result !== true');
diff --git a/test/built-ins/Array/prototype/reduce/15.4.4.21-9-c-ii-16.js b/test/built-ins/Array/prototype/reduce/15.4.4.21-9-c-ii-16.js
index 7bad0ecfe3d5151da4584ff743ecf49aab582e84..51516da72e3539ac94bc45018db24e1d9a3bca2e 100644
--- a/test/built-ins/Array/prototype/reduce/15.4.4.21-9-c-ii-16.js
+++ b/test/built-ins/Array/prototype/reduce/15.4.4.21-9-c-ii-16.js
@@ -4,11 +4,8 @@
 /*---
 es5id: 15.4.4.21-9-c-ii-16
 description: Array.prototype.reduce - non-indexed properties are not called
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
-
         var accessed = false;
         var result1 = true;
         var result2 = true;
@@ -27,6 +24,7 @@ function testcase() {
         var obj = { 0: 11, 10: 12, non_index_property: 8, length: 20 };
 
         Array.prototype.reduce.call(obj, callbackfn, 1);
-        return result1 && result2 && accessed;
-    }
-runTestCase(testcase);
+
+assert(result1, 'result1 !== true');
+assert(result2, 'result2 !== true');
+assert(accessed, 'accessed !== true');
diff --git a/test/built-ins/Array/prototype/reduce/15.4.4.21-9-c-ii-17.js b/test/built-ins/Array/prototype/reduce/15.4.4.21-9-c-ii-17.js
index 0ec567ef896b4b716d92dac499ec2ec4f8c9e566..9d653135978f5bdfcbbdbd64ff6d8c2a49ee2e60 100644
--- a/test/built-ins/Array/prototype/reduce/15.4.4.21-9-c-ii-17.js
+++ b/test/built-ins/Array/prototype/reduce/15.4.4.21-9-c-ii-17.js
@@ -6,11 +6,8 @@ es5id: 15.4.4.21-9-c-ii-17
 description: >
     Array.prototype.reduce - 'accumulator' used for current iteration
     is the result of previous iteration on an Array
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
-
         var result = true;
         var accessed = false;
         var preIteration = 1;
@@ -24,6 +21,6 @@ function testcase() {
         }
 
         [11, 12, 13].reduce(callbackfn, 1);
-        return result && accessed;
-    }
-runTestCase(testcase);
+
+assert(result, 'result !== true');
+assert(accessed, 'accessed !== true');
diff --git a/test/built-ins/Array/prototype/reduce/15.4.4.21-9-c-ii-18.js b/test/built-ins/Array/prototype/reduce/15.4.4.21-9-c-ii-18.js
index 01ae0dfd2d041de61717f546a3acb47ffb70b806..a3f9f8fe7b40d203c349348d9aabcce8d5983b03 100644
--- a/test/built-ins/Array/prototype/reduce/15.4.4.21-9-c-ii-18.js
+++ b/test/built-ins/Array/prototype/reduce/15.4.4.21-9-c-ii-18.js
@@ -7,11 +7,8 @@ description: >
     Array.prototype.reduce - value of 'accumulator' used for first
     iteration is the value of 'initialValue' when it is present on an
     Array-like object
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
-
         var result = false;
         function callbackfn(prevVal, curVal, idx, obj) {
             if (idx === 0) {
@@ -22,6 +19,5 @@ function testcase() {
         var obj = { 0: 11, 1: 9, length: 2 };
 
         Array.prototype.reduce.call(obj, callbackfn, 1);
-        return result;
-    }
-runTestCase(testcase);
+
+assert(result, 'result !== true');
diff --git a/test/built-ins/Array/prototype/reduce/15.4.4.21-9-c-ii-19.js b/test/built-ins/Array/prototype/reduce/15.4.4.21-9-c-ii-19.js
index 52aaa89ea2edb5548b1eb008cd8f985223ce78a1..766779d1fcf216004508eef1d329a5f88fc66b6d 100644
--- a/test/built-ins/Array/prototype/reduce/15.4.4.21-9-c-ii-19.js
+++ b/test/built-ins/Array/prototype/reduce/15.4.4.21-9-c-ii-19.js
@@ -7,11 +7,8 @@ description: >
     Array.prototype.reduce - value of 'accumulator' used for first
     iteration is the value of least index property which is not
     undefined when 'initialValue' is not present on an Array
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
-
         var called = 0;
         var result = false;
         function callbackfn(prevVal, curVal, idx, obj) {
@@ -22,6 +19,6 @@ function testcase() {
         }
 
         [11, 9].reduce(callbackfn);
-        return result && called === 1;
-    }
-runTestCase(testcase);
+
+assert(result, 'result !== true');
+assert.sameValue(called, 1, 'called');
diff --git a/test/built-ins/Array/prototype/reduce/15.4.4.21-9-c-ii-2.js b/test/built-ins/Array/prototype/reduce/15.4.4.21-9-c-ii-2.js
index 7aa907f389121f67452f82b338e331f5e9569705..15ad8ace1d82a6fe62d63023eea9e13e99746d35 100644
--- a/test/built-ins/Array/prototype/reduce/15.4.4.21-9-c-ii-2.js
+++ b/test/built-ins/Array/prototype/reduce/15.4.4.21-9-c-ii-2.js
@@ -6,11 +6,8 @@ es5id: 15.4.4.21-9-c-ii-2
 description: >
     Array.prototype.reduce - callbackfn called with correct parameters
     (initialvalue passed)
-includes: [runTestCase.js]
 ---*/
 
-function testcase() { 
- 
   var bParCorrect = false;
   function callbackfn(prevVal, curVal, idx, obj)
   {
@@ -24,7 +21,5 @@ function testcase() {
 
   var arr = [0,1,true,null,new Object(),"five"];
   var initialValue = 5.5;
-  if( arr.reduce(callbackfn,initialValue) === "five") 
-    return true;
- }
-runTestCase(testcase);
+
+assert.sameValue(arr.reduce(callbackfn,initialValue), "five", 'arr.reduce(callbackfn,initialValue)');
diff --git a/test/built-ins/Array/prototype/reduce/15.4.4.21-9-c-ii-20.js b/test/built-ins/Array/prototype/reduce/15.4.4.21-9-c-ii-20.js
index 1af81d84d05767ee0b3c4a4529ba51bb5ee3e6d4..27e59f80307d22c3463c036e828b48df8a70d2be 100644
--- a/test/built-ins/Array/prototype/reduce/15.4.4.21-9-c-ii-20.js
+++ b/test/built-ins/Array/prototype/reduce/15.4.4.21-9-c-ii-20.js
@@ -4,11 +4,8 @@
 /*---
 es5id: 15.4.4.21-9-c-ii-20
 description: Array.prototype.reduce - undefined can be used as accumulator
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
-
         var accessed = false;
         function callbackfn(prevVal, curVal, idx, obj) {
             accessed = true;
@@ -17,6 +14,5 @@ function testcase() {
 
         var obj = { 0: 11, length: 1 };
 
-        return Array.prototype.reduce.call(obj, callbackfn, undefined) === true && accessed;
-    }
-runTestCase(testcase);
+assert.sameValue(Array.prototype.reduce.call(obj, callbackfn, undefined), true, 'Array.prototype.reduce.call(obj, callbackfn, undefined)');
+assert(accessed, 'accessed !== true');
diff --git a/test/built-ins/Array/prototype/reduce/15.4.4.21-9-c-ii-21.js b/test/built-ins/Array/prototype/reduce/15.4.4.21-9-c-ii-21.js
index 98bcb4acd973381edb89c6df53c0a793c2ef576a..8e061807bd4a1fb164cabfc05bafa0d23c9bc99f 100644
--- a/test/built-ins/Array/prototype/reduce/15.4.4.21-9-c-ii-21.js
+++ b/test/built-ins/Array/prototype/reduce/15.4.4.21-9-c-ii-21.js
@@ -4,11 +4,8 @@
 /*---
 es5id: 15.4.4.21-9-c-ii-21
 description: Array.prototype.reduce - null can be used as accumulator
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
-
         var accessed = false;
         function callbackfn(prevVal, curVal, idx, obj) {
             accessed = true;
@@ -17,6 +14,5 @@ function testcase() {
 
         var obj = { 0: 11, length: 1 };
 
-        return Array.prototype.reduce.call(obj, callbackfn, null) === true && accessed;
-    }
-runTestCase(testcase);
+assert.sameValue(Array.prototype.reduce.call(obj, callbackfn, null), true, 'Array.prototype.reduce.call(obj, callbackfn, null)');
+assert(accessed, 'accessed !== true');
diff --git a/test/built-ins/Array/prototype/reduce/15.4.4.21-9-c-ii-22.js b/test/built-ins/Array/prototype/reduce/15.4.4.21-9-c-ii-22.js
index 8eff43af54600b4e634f7196e18fd8b548c40a00..17528b9bb56ea48496387fc33827c50f5b327a6c 100644
--- a/test/built-ins/Array/prototype/reduce/15.4.4.21-9-c-ii-22.js
+++ b/test/built-ins/Array/prototype/reduce/15.4.4.21-9-c-ii-22.js
@@ -6,11 +6,8 @@ es5id: 15.4.4.21-9-c-ii-22
 description: >
     Array.prototype.reduce - boolean primitive can be used as
     accumulator
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
-
         var accessed = false;
         function callbackfn(prevVal, curVal, idx, obj) {
             accessed = true;
@@ -19,6 +16,5 @@ function testcase() {
 
         var obj = { 0: 11, length: 1 };
 
-        return Array.prototype.reduce.call(obj, callbackfn, false) === true && accessed;
-    }
-runTestCase(testcase);
+assert.sameValue(Array.prototype.reduce.call(obj, callbackfn, false), true, 'Array.prototype.reduce.call(obj, callbackfn, false)');
+assert(accessed, 'accessed !== true');
diff --git a/test/built-ins/Array/prototype/reduce/15.4.4.21-9-c-ii-23.js b/test/built-ins/Array/prototype/reduce/15.4.4.21-9-c-ii-23.js
index c06bc3aca5f68470a2b4bdc7645e0b09f39eb755..9ed6701d1f7d76dcdc53b8d91957a713c757802d 100644
--- a/test/built-ins/Array/prototype/reduce/15.4.4.21-9-c-ii-23.js
+++ b/test/built-ins/Array/prototype/reduce/15.4.4.21-9-c-ii-23.js
@@ -6,11 +6,8 @@ es5id: 15.4.4.21-9-c-ii-23
 description: >
     Array.prototype.reduce - number primitive can be used as
     accumulator
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
-
         var accessed = false;
         function callbackfn(prevVal, curVal, idx, obj) {
             accessed = true;
@@ -19,6 +16,5 @@ function testcase() {
 
         var obj = { 0: 11, length: 1 };
 
-        return Array.prototype.reduce.call(obj, callbackfn, 12) === true && accessed;
-    }
-runTestCase(testcase);
+assert.sameValue(Array.prototype.reduce.call(obj, callbackfn, 12), true, 'Array.prototype.reduce.call(obj, callbackfn, 12)');
+assert(accessed, 'accessed !== true');
diff --git a/test/built-ins/Array/prototype/reduce/15.4.4.21-9-c-ii-24.js b/test/built-ins/Array/prototype/reduce/15.4.4.21-9-c-ii-24.js
index 3ca3a438f2fde20690e28b5bf32582cd1c5d0979..d4068840c253120d0153ff9cfd487ac2a14f65a0 100644
--- a/test/built-ins/Array/prototype/reduce/15.4.4.21-9-c-ii-24.js
+++ b/test/built-ins/Array/prototype/reduce/15.4.4.21-9-c-ii-24.js
@@ -6,11 +6,8 @@ es5id: 15.4.4.21-9-c-ii-24
 description: >
     Array.prototype.reduce - string primitive can be used as
     accumulator
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
-
         var accessed = false;
         function callbackfn(prevVal, curVal, idx, obj) {
             accessed = true;
@@ -19,6 +16,5 @@ function testcase() {
 
         var obj = { 0: 11, length: 1 };
 
-        return Array.prototype.reduce.call(obj, callbackfn, "hello_") === true && accessed;
-    }
-runTestCase(testcase);
+assert.sameValue(Array.prototype.reduce.call(obj, callbackfn, "hello_"), true, 'Array.prototype.reduce.call(obj, callbackfn, "hello_")');
+assert(accessed, 'accessed !== true');
diff --git a/test/built-ins/Array/prototype/reduce/15.4.4.21-9-c-ii-25.js b/test/built-ins/Array/prototype/reduce/15.4.4.21-9-c-ii-25.js
index 35aa5722307baeab5ec5bb32459cc124a10b4dde..34c73fb085c59103975927a45af0f2643bd61f63 100644
--- a/test/built-ins/Array/prototype/reduce/15.4.4.21-9-c-ii-25.js
+++ b/test/built-ins/Array/prototype/reduce/15.4.4.21-9-c-ii-25.js
@@ -4,11 +4,8 @@
 /*---
 es5id: 15.4.4.21-9-c-ii-25
 description: Array.prototype.reduce - Function object can be used as accumulator
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
-
         var objFunction = function () { };
 
         var accessed = false;
@@ -19,6 +16,5 @@ function testcase() {
 
         var obj = { 0: 11, length: 1 };
 
-        return Array.prototype.reduce.call(obj, callbackfn, objFunction) === true && accessed;
-    }
-runTestCase(testcase);
+assert.sameValue(Array.prototype.reduce.call(obj, callbackfn, objFunction), true, 'Array.prototype.reduce.call(obj, callbackfn, objFunction)');
+assert(accessed, 'accessed !== true');
diff --git a/test/built-ins/Array/prototype/reduce/15.4.4.21-9-c-ii-26.js b/test/built-ins/Array/prototype/reduce/15.4.4.21-9-c-ii-26.js
index 409cae6225270842cd38ddf481ae545eda82485c..326e7a081a7573448ad37218a2b05e6f20346464 100644
--- a/test/built-ins/Array/prototype/reduce/15.4.4.21-9-c-ii-26.js
+++ b/test/built-ins/Array/prototype/reduce/15.4.4.21-9-c-ii-26.js
@@ -4,11 +4,8 @@
 /*---
 es5id: 15.4.4.21-9-c-ii-26
 description: Array.prototype.reduce - Array object can be used as accumulator
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
-
         var objArray = new Array(10);
 
         var accessed = false;
@@ -19,6 +16,5 @@ function testcase() {
 
         var obj = { 0: 11, length: 1 };
 
-        return Array.prototype.reduce.call(obj, callbackfn, objArray) === true && accessed;
-    }
-runTestCase(testcase);
+assert.sameValue(Array.prototype.reduce.call(obj, callbackfn, objArray), true, 'Array.prototype.reduce.call(obj, callbackfn, objArray)');
+assert(accessed, 'accessed !== true');
diff --git a/test/built-ins/Array/prototype/reduce/15.4.4.21-9-c-ii-27.js b/test/built-ins/Array/prototype/reduce/15.4.4.21-9-c-ii-27.js
index 7bd5cec231bc499941816b25b96b3c8a2dc43646..727c1218557e5caf9db42c8b3cd3e6a431c91a3e 100644
--- a/test/built-ins/Array/prototype/reduce/15.4.4.21-9-c-ii-27.js
+++ b/test/built-ins/Array/prototype/reduce/15.4.4.21-9-c-ii-27.js
@@ -4,11 +4,8 @@
 /*---
 es5id: 15.4.4.21-9-c-ii-27
 description: Array.prototype.reduce - String object can be used as accumulator
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
-
         var objString = new String();
 
         var accessed = false;
@@ -19,6 +16,5 @@ function testcase() {
 
         var obj = { 0: 11, length: 1 };
 
-        return Array.prototype.reduce.call(obj, callbackfn, objString) === true && accessed;
-    }
-runTestCase(testcase);
+assert.sameValue(Array.prototype.reduce.call(obj, callbackfn, objString), true, 'Array.prototype.reduce.call(obj, callbackfn, objString)');
+assert(accessed, 'accessed !== true');
diff --git a/test/built-ins/Array/prototype/reduce/15.4.4.21-9-c-ii-28.js b/test/built-ins/Array/prototype/reduce/15.4.4.21-9-c-ii-28.js
index 230308bf6351c3d00357f69aa039ef27b04a202b..03006716d11fac6366cc3b0671206c9929a4e93b 100644
--- a/test/built-ins/Array/prototype/reduce/15.4.4.21-9-c-ii-28.js
+++ b/test/built-ins/Array/prototype/reduce/15.4.4.21-9-c-ii-28.js
@@ -4,11 +4,8 @@
 /*---
 es5id: 15.4.4.21-9-c-ii-28
 description: Array.prototype.reduce - Boolean object can be used as accumulator
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
-
         var objBoolean = new Boolean();
 
         var accessed = false;
@@ -19,6 +16,5 @@ function testcase() {
 
         var obj = { 0: 11, length: 1 };
 
-        return Array.prototype.reduce.call(obj, callbackfn, objBoolean) === true && accessed;
-    }
-runTestCase(testcase);
+assert.sameValue(Array.prototype.reduce.call(obj, callbackfn, objBoolean), true, 'Array.prototype.reduce.call(obj, callbackfn, objBoolean)');
+assert(accessed, 'accessed !== true');
diff --git a/test/built-ins/Array/prototype/reduce/15.4.4.21-9-c-ii-29.js b/test/built-ins/Array/prototype/reduce/15.4.4.21-9-c-ii-29.js
index cff38a8dbaa8df01b6caeaf45a8adf57bc7e34b3..39f163756181c5d4a2f5e0bfa303ce15605052d2 100644
--- a/test/built-ins/Array/prototype/reduce/15.4.4.21-9-c-ii-29.js
+++ b/test/built-ins/Array/prototype/reduce/15.4.4.21-9-c-ii-29.js
@@ -4,11 +4,8 @@
 /*---
 es5id: 15.4.4.21-9-c-ii-29
 description: Array.prototype.reduce - Number object can be used as accumulator
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
-
         var objNumber = new Number();
 
         var accessed = false;
@@ -19,6 +16,5 @@ function testcase() {
 
         var obj = { 0: 11, length: 1 };
 
-        return Array.prototype.reduce.call(obj, callbackfn, objNumber) === true && accessed;
-    }
-runTestCase(testcase);
+assert.sameValue(Array.prototype.reduce.call(obj, callbackfn, objNumber), true, 'Array.prototype.reduce.call(obj, callbackfn, objNumber)');
+assert(accessed, 'accessed !== true');
diff --git a/test/built-ins/Array/prototype/reduce/15.4.4.21-9-c-ii-3.js b/test/built-ins/Array/prototype/reduce/15.4.4.21-9-c-ii-3.js
index 239322be0f0445b5f385ee30b17560f9efb257c0..3074cd1e6001f00206ef57f5a253db9376735d3f 100644
--- a/test/built-ins/Array/prototype/reduce/15.4.4.21-9-c-ii-3.js
+++ b/test/built-ins/Array/prototype/reduce/15.4.4.21-9-c-ii-3.js
@@ -4,11 +4,8 @@
 /*---
 es5id: 15.4.4.21-9-c-ii-3
 description: Array.prototype.reduce - callbackfn takes 4 arguments
-includes: [runTestCase.js]
 ---*/
 
-function testcase() { 
- 
   var bCalled = false;
   function callbackfn(prevVal, curVal, idx, obj)
   { 
@@ -19,7 +16,6 @@ function testcase() {
       return false;
   }
   var arr = [0,1,2,3,4,5,6,7,8,9];
-  if(arr.reduce(callbackfn,true) === true && bCalled === true)
-    return true;
- }
-runTestCase(testcase);
+
+assert.sameValue(arr.reduce(callbackfn,true), true, 'arr.reduce(callbackfn,true)');
+assert.sameValue(bCalled, true, 'bCalled');
diff --git a/test/built-ins/Array/prototype/reduce/15.4.4.21-9-c-ii-30.js b/test/built-ins/Array/prototype/reduce/15.4.4.21-9-c-ii-30.js
index 383aa57168351089b6b2817ca1849c28688ff0c9..d810b428dbcc3355536d139fda244c0fbcb1f538 100644
--- a/test/built-ins/Array/prototype/reduce/15.4.4.21-9-c-ii-30.js
+++ b/test/built-ins/Array/prototype/reduce/15.4.4.21-9-c-ii-30.js
@@ -4,11 +4,8 @@
 /*---
 es5id: 15.4.4.21-9-c-ii-30
 description: Array.prototype.reduce - the Math object can be used as accumulator
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
-
         var accessed = false;
         function callbackfn(prevVal, curVal, idx, obj) {
             accessed = true;
@@ -17,6 +14,5 @@ function testcase() {
 
         var obj = { 0: 11, length: 1 };
 
-        return Array.prototype.reduce.call(obj, callbackfn, Math) === true && accessed;
-    }
-runTestCase(testcase);
+assert.sameValue(Array.prototype.reduce.call(obj, callbackfn, Math), true, 'Array.prototype.reduce.call(obj, callbackfn, Math)');
+assert(accessed, 'accessed !== true');
diff --git a/test/built-ins/Array/prototype/reduce/15.4.4.21-9-c-ii-31.js b/test/built-ins/Array/prototype/reduce/15.4.4.21-9-c-ii-31.js
index 9f7904ecfdbd6eee286d36ba33b2bffa30760843..c6cd280b30bd46811c1f74bfdf7659124127278b 100644
--- a/test/built-ins/Array/prototype/reduce/15.4.4.21-9-c-ii-31.js
+++ b/test/built-ins/Array/prototype/reduce/15.4.4.21-9-c-ii-31.js
@@ -4,11 +4,8 @@
 /*---
 es5id: 15.4.4.21-9-c-ii-31
 description: Array.prototype.reduce - Date object can be used as accumulator
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
-
         var objDate = new Date();
 
         var accessed = false;
@@ -19,6 +16,5 @@ function testcase() {
 
         var obj = { 0: 11, length: 1 };
 
-        return Array.prototype.reduce.call(obj, callbackfn, objDate) === true && accessed;
-    }
-runTestCase(testcase);
+assert.sameValue(Array.prototype.reduce.call(obj, callbackfn, objDate), true, 'Array.prototype.reduce.call(obj, callbackfn, objDate)');
+assert(accessed, 'accessed !== true');
diff --git a/test/built-ins/Array/prototype/reduce/15.4.4.21-9-c-ii-32.js b/test/built-ins/Array/prototype/reduce/15.4.4.21-9-c-ii-32.js
index 025e0419bee136e20ffb13ab6e32c09124457a8e..adb6a57ab3613f3979a754c6adafca031898ac38 100644
--- a/test/built-ins/Array/prototype/reduce/15.4.4.21-9-c-ii-32.js
+++ b/test/built-ins/Array/prototype/reduce/15.4.4.21-9-c-ii-32.js
@@ -4,11 +4,8 @@
 /*---
 es5id: 15.4.4.21-9-c-ii-32
 description: Array.prototype.reduce - RegExp object can be used as accumulator
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
-
         var objRegExp = new RegExp();
 
         var accessed = false;
@@ -19,6 +16,5 @@ function testcase() {
 
         var obj = { 0: 11, length: 1 };
 
-        return Array.prototype.reduce.call(obj, callbackfn, objRegExp) === true && accessed;
-    }
-runTestCase(testcase);
+assert.sameValue(Array.prototype.reduce.call(obj, callbackfn, objRegExp), true, 'Array.prototype.reduce.call(obj, callbackfn, objRegExp)');
+assert(accessed, 'accessed !== true');
diff --git a/test/built-ins/Array/prototype/reduce/15.4.4.21-9-c-ii-33.js b/test/built-ins/Array/prototype/reduce/15.4.4.21-9-c-ii-33.js
index 0c973e9200e3ff4faceb62bf9a75d3bcc93e3fb3..bc7dc899d9ff945c36af960b5d740a920e37e359 100644
--- a/test/built-ins/Array/prototype/reduce/15.4.4.21-9-c-ii-33.js
+++ b/test/built-ins/Array/prototype/reduce/15.4.4.21-9-c-ii-33.js
@@ -4,11 +4,8 @@
 /*---
 es5id: 15.4.4.21-9-c-ii-33
 description: Array.prototype.reduce - the JSON can be used as accumulator
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
-
         var accessed = false;
         function callbackfn(prevVal, curVal, idx, obj) {
             accessed = true;
@@ -17,6 +14,5 @@ function testcase() {
 
         var obj = { 0: 11, length: 1 };
 
-        return Array.prototype.reduce.call(obj, callbackfn, JSON) === true && accessed;
-    }
-runTestCase(testcase);
+assert.sameValue(Array.prototype.reduce.call(obj, callbackfn, JSON), true, 'Array.prototype.reduce.call(obj, callbackfn, JSON)');
+assert(accessed, 'accessed !== true');
diff --git a/test/built-ins/Array/prototype/reduce/15.4.4.21-9-c-ii-34.js b/test/built-ins/Array/prototype/reduce/15.4.4.21-9-c-ii-34.js
index 1e81b884f0dd40c5e456795ae018fd7e75c67416..9a9c1ea528b39f21c690644f010a74aba98b77d9 100644
--- a/test/built-ins/Array/prototype/reduce/15.4.4.21-9-c-ii-34.js
+++ b/test/built-ins/Array/prototype/reduce/15.4.4.21-9-c-ii-34.js
@@ -4,11 +4,8 @@
 /*---
 es5id: 15.4.4.21-9-c-ii-34
 description: Array.prototype.reduce - Error object can be used as accumulator
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
-
         var objError = new RangeError();
 
         var accessed = false;
@@ -19,6 +16,5 @@ function testcase() {
 
         var obj = { 0: 11, length: 1 };
 
-        return Array.prototype.reduce.call(obj, callbackfn, objError) === true && accessed;
-    }
-runTestCase(testcase);
+assert.sameValue(Array.prototype.reduce.call(obj, callbackfn, objError), true, 'Array.prototype.reduce.call(obj, callbackfn, objError)');
+assert(accessed, 'accessed !== true');
diff --git a/test/built-ins/Array/prototype/reduce/15.4.4.21-9-c-ii-35.js b/test/built-ins/Array/prototype/reduce/15.4.4.21-9-c-ii-35.js
index 00dac48c300fc0c718fdd622afa6209a5aae375a..dbd0e610639823781087384ca5f6969d677ece17 100644
--- a/test/built-ins/Array/prototype/reduce/15.4.4.21-9-c-ii-35.js
+++ b/test/built-ins/Array/prototype/reduce/15.4.4.21-9-c-ii-35.js
@@ -6,11 +6,8 @@ es5id: 15.4.4.21-9-c-ii-35
 description: >
     Array.prototype.reduce - the Arguments object can be used as
     accumulator
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
-
         var accessed = false;
         var arg;
 
@@ -25,6 +22,5 @@ function testcase() {
             arg = arguments;
         }(10, 11, 12, 13));
 
-        return Array.prototype.reduce.call(obj, callbackfn, arg) === true && accessed;
-    }
-runTestCase(testcase);
+assert.sameValue(Array.prototype.reduce.call(obj, callbackfn, arg), true, 'Array.prototype.reduce.call(obj, callbackfn, arg)');
+assert(accessed, 'accessed !== true');
diff --git a/test/built-ins/Array/prototype/reduce/15.4.4.21-9-c-ii-37.js b/test/built-ins/Array/prototype/reduce/15.4.4.21-9-c-ii-37.js
index e49546d60dc90a11832dfbb729edc0801fb4f0f1..b2a78818707d774283ea6bdc8a86f897f3828284 100644
--- a/test/built-ins/Array/prototype/reduce/15.4.4.21-9-c-ii-37.js
+++ b/test/built-ins/Array/prototype/reduce/15.4.4.21-9-c-ii-37.js
@@ -6,13 +6,9 @@ es5id: 15.4.4.21-9-c-ii-37
 description: >
     Array.prototype.reduce - the global object can be used as
     accumulator
-includes:
-    - runTestCase.js
-    - fnGlobalObject.js
+includes: [fnGlobalObject.js]
 ---*/
 
-function testcase() {
-
         var accessed = false;
         function callbackfn(prevVal, curVal, idx, obj) {
             accessed = true;
@@ -21,6 +17,5 @@ function testcase() {
 
         var obj = { 0: 11, length: 1 };
 
-        return Array.prototype.reduce.call(obj, callbackfn, fnGlobalObject()) === true && accessed;
-    }
-runTestCase(testcase);
+assert.sameValue(Array.prototype.reduce.call(obj, callbackfn, fnGlobalObject()), true, 'Array.prototype.reduce.call(obj, callbackfn, fnGlobalObject())');
+assert(accessed, 'accessed !== true');
diff --git a/test/built-ins/Array/prototype/reduce/15.4.4.21-9-c-ii-4-s.js b/test/built-ins/Array/prototype/reduce/15.4.4.21-9-c-ii-4-s.js
index 8fc526b3054e3cd9e6df1c39a9d1e658e573a36f..468d72a27e887d8e6a788d33e0a0db4a67bfa185 100644
--- a/test/built-ins/Array/prototype/reduce/15.4.4.21-9-c-ii-4-s.js
+++ b/test/built-ins/Array/prototype/reduce/15.4.4.21-9-c-ii-4-s.js
@@ -7,10 +7,8 @@ description: >
     Array.prototype.reduce - undefined passed as thisValue to strict
     callbackfn
 flags: [noStrict]
-includes: [runTestCase.js]
 ---*/
 
-function testcase() { 
   var innerThisCorrect = false;
   function callbackfn(prevVal, curVal, idx, obj)
   { 
@@ -19,6 +17,5 @@ function testcase() {
      return true;
   }
   [0].reduce(callbackfn,true);
-  return innerThisCorrect;    
- }
-runTestCase(testcase);
+
+assert(innerThisCorrect, 'innerThisCorrect !== true');
diff --git a/test/built-ins/Array/prototype/reduce/15.4.4.21-9-c-ii-4.js b/test/built-ins/Array/prototype/reduce/15.4.4.21-9-c-ii-4.js
index e8a1fd2c0850fc436cddd7a1f05eae48ff131a3e..a3da080eb98818fa1c8a78f4ef71aeba40f03b86 100644
--- a/test/built-ins/Array/prototype/reduce/15.4.4.21-9-c-ii-4.js
+++ b/test/built-ins/Array/prototype/reduce/15.4.4.21-9-c-ii-4.js
@@ -6,11 +6,8 @@ es5id: 15.4.4.21-9-c-ii-4
 description: >
     Array.prototype.reduce - k values are passed in acending numeric
     order on an Array
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
-
         var arr = [0, 1, 2];
         var lastIdx = 0;
         var result = true;
@@ -26,6 +23,6 @@ function testcase() {
         }
 
         arr.reduce(callbackfn, 11);
-        return result && accessed;
-    }
-runTestCase(testcase);
+
+assert(result, 'result !== true');
+assert(accessed, 'accessed !== true');
diff --git a/test/built-ins/Array/prototype/reduce/15.4.4.21-9-c-ii-5.js b/test/built-ins/Array/prototype/reduce/15.4.4.21-9-c-ii-5.js
index ebdb2a0133e07f7ce080164f312cd89483a66f5f..d0efec527b68de6f6ac1e104e9b448a37bc47a2c 100644
--- a/test/built-ins/Array/prototype/reduce/15.4.4.21-9-c-ii-5.js
+++ b/test/built-ins/Array/prototype/reduce/15.4.4.21-9-c-ii-5.js
@@ -6,11 +6,8 @@ es5id: 15.4.4.21-9-c-ii-5
 description: >
     Array.prototype.reduce - k values are accessed during each
     iteration and not prior to starting the loop on an Array
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
-
         var result = true;
         var kIndex = [];
         var called = 0;
@@ -32,6 +29,5 @@ function testcase() {
 
         [11, 12, 13, 14].reduce(callbackfn, 1);
 
-        return result && called === 4;
-    }
-runTestCase(testcase);
+assert(result, 'result !== true');
+assert.sameValue(called, 4, 'called');
diff --git a/test/built-ins/Array/prototype/reduce/15.4.4.21-9-c-ii-8.js b/test/built-ins/Array/prototype/reduce/15.4.4.21-9-c-ii-8.js
index cb50d526c87d775deb1fe04902321cb15723a3b1..1c3956cca4679ea9a86191327ce1c6e690faa6fb 100644
--- a/test/built-ins/Array/prototype/reduce/15.4.4.21-9-c-ii-8.js
+++ b/test/built-ins/Array/prototype/reduce/15.4.4.21-9-c-ii-8.js
@@ -6,11 +6,8 @@ es5id: 15.4.4.21-9-c-ii-8
 description: >
     Array.prototype.reduce - element changed by callbackfn on previous
     iterations is observed
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
-
         var result = false;
         function callbackfn(prevVal, curVal, idx, obj) {
             if (idx === 0) {
@@ -25,6 +22,5 @@ function testcase() {
         var obj = { 0: 11, 1: 12, length: 2 };
 
         Array.prototype.reduce.call(obj, callbackfn, 1);
-        return result;
-    }
-runTestCase(testcase);
+
+assert(result, 'result !== true');
diff --git a/test/built-ins/Array/prototype/reduce/15.4.4.21-9-c-ii-9.js b/test/built-ins/Array/prototype/reduce/15.4.4.21-9-c-ii-9.js
index 84ad5fcc2a54607275ceeae97fec88e9619ecced..58824ccf57311a51c406053c678d6629ad65ddcb 100644
--- a/test/built-ins/Array/prototype/reduce/15.4.4.21-9-c-ii-9.js
+++ b/test/built-ins/Array/prototype/reduce/15.4.4.21-9-c-ii-9.js
@@ -6,17 +6,13 @@ es5id: 15.4.4.21-9-c-ii-9
 description: >
     Array.prototype.reduce - callbackfn is called with 0 formal
     parameter
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
-
         var called = 0;
         function callbackfn() {
             called++;
         }
 
         [11, 12].reduce(callbackfn, 1);
-        return 2 === called;
-    }
-runTestCase(testcase);
+
+assert.sameValue(called, 2, 'called');