diff --git a/test/built-ins/Object/create/15.2.3.5-4-10.js b/test/built-ins/Object/create/15.2.3.5-4-10.js
index 144db6c9b4c3e04f7155a064d691fa4bd9d92088..b62c3b3c420fac5f639cfe3dfa86def267843f4d 100644
--- a/test/built-ins/Object/create/15.2.3.5-4-10.js
+++ b/test/built-ins/Object/create/15.2.3.5-4-10.js
@@ -6,11 +6,8 @@ es5id: 15.2.3.5-4-10
 description: >
     Object.create - argument 'Properties' is the Math object (15.2.3.7
     step 2)
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
-
         var result = false;
         Object.defineProperty(Math, "prop", {
             get: function () {
@@ -21,11 +18,7 @@ function testcase() {
             configurable: true
         });
 
-        try {
             var newObj = Object.create({}, Math);
-            return result && newObj.hasOwnProperty("prop");
-        } finally {
-            delete Math.prop;
-        }
-    }
-runTestCase(testcase);
+
+assert(result, 'result !== true');
+assert(newObj.hasOwnProperty("prop"), 'newObj.hasOwnProperty("prop") !== true');
diff --git a/test/built-ins/Object/create/15.2.3.5-4-117.js b/test/built-ins/Object/create/15.2.3.5-4-117.js
index 346af06db976740b831af78528f1bad2091403e5..0def02aaa84c0f81672f246d076679de738dab35 100644
--- a/test/built-ins/Object/create/15.2.3.5-4-117.js
+++ b/test/built-ins/Object/create/15.2.3.5-4-117.js
@@ -7,12 +7,8 @@ description: >
     Object.create - one property in 'Properties' is the Math object
     that uses Object's [[Get]] method to access the 'configurable'
     property (8.10.5 step 4.a)
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
-
-        try {
             Math.configurable = true;
 
             var newObj = Object.create({}, {
@@ -23,9 +19,5 @@ function testcase() {
             delete newObj.prop;
             var result2 = newObj.hasOwnProperty("prop");
 
-            return result1 === true && result2 === false;
-        } finally {
-            delete Math.configurable;
-        }
-    }
-runTestCase(testcase);
+assert.sameValue(result1, true, 'result1');
+assert.sameValue(result2, false, 'result2');
diff --git a/test/built-ins/Object/create/15.2.3.5-4-120.js b/test/built-ins/Object/create/15.2.3.5-4-120.js
index d561bb5d0b801a18c789477cbccd07220f24df57..0ca99d1355d5b9133d02c1098e935fd56d27e9c1 100644
--- a/test/built-ins/Object/create/15.2.3.5-4-120.js
+++ b/test/built-ins/Object/create/15.2.3.5-4-120.js
@@ -7,12 +7,8 @@ description: >
     Object.create - one property in 'Properties' is the JSON object
     that uses Object's [[Get]] method to access the 'configurable'
     property (8.10.5 step 4.a)
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
-
-        try {
             JSON.configurable = true;
 
             var newObj = Object.create({}, {
@@ -23,9 +19,5 @@ function testcase() {
             delete newObj.prop;
             var result2 = newObj.hasOwnProperty("prop");
 
-            return result1 === true && result2 === false;
-        } finally {
-            delete JSON.configurable;
-        }
-    }
-runTestCase(testcase);
+assert.sameValue(result1, true, 'result1');
+assert.sameValue(result2, false, 'result2');
diff --git a/test/built-ins/Object/create/15.2.3.5-4-124.js b/test/built-ins/Object/create/15.2.3.5-4-124.js
index e380ba737cbfe7430dabc02190ca4e04db18e80a..d22aee94f4eddebd55769d78d1ad57a71af11c7d 100644
--- a/test/built-ins/Object/create/15.2.3.5-4-124.js
+++ b/test/built-ins/Object/create/15.2.3.5-4-124.js
@@ -7,14 +7,9 @@ description: >
     Object.create - one property in 'Properties' is the global object
     that uses Object's [[Get]] method to access the 'configurable'
     property (8.10.5 step 4.a)
-includes:
-    - runTestCase.js
-    - fnGlobalObject.js
+includes: [fnGlobalObject.js]
 ---*/
 
-function testcase() {
-
-        try {
             fnGlobalObject().configurable = true;
 
             var newObj = Object.create({}, {
@@ -25,9 +20,5 @@ function testcase() {
             delete newObj.prop;
             var result2 = newObj.hasOwnProperty("prop");
 
-            return result1 === true && result2 === false;
-        } finally {
-            delete fnGlobalObject().configurable;
-        }
-    }
-runTestCase(testcase);
+assert.sameValue(result1, true, 'result1');
+assert.sameValue(result2, false, 'result2');
diff --git a/test/built-ins/Object/create/15.2.3.5-4-13.js b/test/built-ins/Object/create/15.2.3.5-4-13.js
index 6aeabdb622e65aa9aa84eb677a4f5139e419fd5c..582f529fdb7b9e9f7762d75f4e919f09ded5ec8c 100644
--- a/test/built-ins/Object/create/15.2.3.5-4-13.js
+++ b/test/built-ins/Object/create/15.2.3.5-4-13.js
@@ -6,11 +6,8 @@ es5id: 15.2.3.5-4-13
 description: >
     Object.create - argument 'Properties' is the JSON object (15.2.3.7
     step 2)
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
-
         var result = false;
 
         Object.defineProperty(JSON, "prop", {
@@ -22,11 +19,7 @@ function testcase() {
             configurable: true
         });
 
-        try {
             var newObj = Object.create({}, JSON);
-            return result && newObj.hasOwnProperty("prop");
-        } finally {
-            delete JSON.prop;
-        }
-    }
-runTestCase(testcase);
+
+assert(result, 'result !== true');
+assert(newObj.hasOwnProperty("prop"), 'newObj.hasOwnProperty("prop") !== true');
diff --git a/test/built-ins/Object/create/15.2.3.5-4-170.js b/test/built-ins/Object/create/15.2.3.5-4-170.js
index 02d511b2fc63742dab5b1aa17fe5fd4fea1a3b63..b3c6507920e5d618635bf9fd0b5071772efcdeae 100644
--- a/test/built-ins/Object/create/15.2.3.5-4-170.js
+++ b/test/built-ins/Object/create/15.2.3.5-4-170.js
@@ -7,21 +7,12 @@ description: >
     Object.create - one property in 'Properties' is the Math object
     that uses Object's [[Get]] method to access the 'value' property
     (8.10.5 step 5.a)
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
-
-        try {
             Math.value = "MathValue";
 
             var newObj = Object.create({}, {
                 prop: Math
             });
 
-            return newObj.prop === "MathValue";
-        } finally {
-            delete Math.value;
-        }
-    }
-runTestCase(testcase);
+assert.sameValue(newObj.prop, "MathValue", 'newObj.prop');
diff --git a/test/built-ins/Object/create/15.2.3.5-4-173.js b/test/built-ins/Object/create/15.2.3.5-4-173.js
index eeb9d7d783c509c4448030d1e9df3d20253ad62d..01a70416925b52a1597d64eb227b3683a118b366 100644
--- a/test/built-ins/Object/create/15.2.3.5-4-173.js
+++ b/test/built-ins/Object/create/15.2.3.5-4-173.js
@@ -7,21 +7,12 @@ description: >
     Object.create - one property in 'Properties' is the JSON object
     that uses Object's [[Get]] method to access the 'value' property
     (8.10.5 step 5.a)
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
-
-        try {
             JSON.value = "JSONValue";
 
             var newObj = Object.create({}, {
                 prop: JSON
             });
 
-            return newObj.prop === "JSONValue";
-        } finally {
-            delete JSON.value;
-        }
-    }
-runTestCase(testcase);
+assert.sameValue(newObj.prop, "JSONValue", 'newObj.prop');
diff --git a/test/built-ins/Object/create/15.2.3.5-4-177.js b/test/built-ins/Object/create/15.2.3.5-4-177.js
index 4fad22f25c4cd0b0bdd46172a66ef77719601c93..d9e835efb2ae78ccc1b0126134c209db2305b5a4 100644
--- a/test/built-ins/Object/create/15.2.3.5-4-177.js
+++ b/test/built-ins/Object/create/15.2.3.5-4-177.js
@@ -7,23 +7,13 @@ description: >
     Object.create - one property in 'Properties' is the global object
     that uses Object's [[Get]] method to access the 'value' property
     (8.10.5 step 5.a)
-includes:
-    - runTestCase.js
-    - fnGlobalObject.js
+includes: [fnGlobalObject.js]
 ---*/
 
-function testcase() {
-
-        try {
             fnGlobalObject().value = "GlobalValue";
 
             var newObj = Object.create({}, {
                 prop: fnGlobalObject()
             });
 
-            return newObj.prop === "GlobalValue";
-        } finally {
-            delete fnGlobalObject().value;
-        }
-    }
-runTestCase(testcase);
+assert.sameValue(newObj.prop, "GlobalValue", 'newObj.prop');
diff --git a/test/built-ins/Object/create/15.2.3.5-4-196.js b/test/built-ins/Object/create/15.2.3.5-4-196.js
index 6a254ac594793a05ffc9f30aa7e398f2e3950373..4a10a2d35a3c5eb5c341efa322a35bfe8d20dea5 100644
--- a/test/built-ins/Object/create/15.2.3.5-4-196.js
+++ b/test/built-ins/Object/create/15.2.3.5-4-196.js
@@ -7,12 +7,8 @@ description: >
     Object.create - one property in 'Properties' is the Math object
     that uses Object's [[Get]] method to access the 'writable'
     property (8.10.5 step 6.a)
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
-
-        try {
             Math.writable = true;
 
             var newObj = Object.create({}, {
@@ -25,9 +21,5 @@ function testcase() {
 
             var afterWrite = (newObj.prop === "isWritable");
 
-            return beforeWrite === true && afterWrite === true;
-        } finally {
-            delete Math.writable;
-        }
-    }
-runTestCase(testcase);
+assert.sameValue(beforeWrite, true, 'beforeWrite');
+assert.sameValue(afterWrite, true, 'afterWrite');
diff --git a/test/built-ins/Object/create/15.2.3.5-4-199.js b/test/built-ins/Object/create/15.2.3.5-4-199.js
index 77afd18ae8916e32fc8a21a8e3e75239ccd569a4..b0d11199274f139d071d11d99a383bcde7617ad8 100644
--- a/test/built-ins/Object/create/15.2.3.5-4-199.js
+++ b/test/built-ins/Object/create/15.2.3.5-4-199.js
@@ -7,12 +7,8 @@ description: >
     Object.create - one property in 'Properties' is the JSON object
     that uses Object's [[Get]] method to access the 'writable'
     property (8.10.5 step 6.a)
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
-
-        try {
             JSON.writable = true;
 
             var newObj = Object.create({}, {
@@ -25,9 +21,5 @@ function testcase() {
 
             var afterWrite = (newObj.prop === "isWritable");
 
-            return beforeWrite === true && afterWrite === true;
-        } finally {
-            delete JSON.writable;
-        }
-    }
-runTestCase(testcase);
+assert.sameValue(beforeWrite, true, 'beforeWrite');
+assert.sameValue(afterWrite, true, 'afterWrite');
diff --git a/test/built-ins/Object/create/15.2.3.5-4-203.js b/test/built-ins/Object/create/15.2.3.5-4-203.js
index 99dfdc7b7ef0ea45bb958646b8b0c5e8624edeb6..013ecb214a144dabe7cf0cf2992c0099f4cca7d7 100644
--- a/test/built-ins/Object/create/15.2.3.5-4-203.js
+++ b/test/built-ins/Object/create/15.2.3.5-4-203.js
@@ -7,14 +7,9 @@ description: >
     Object.create - one property in 'Properties' is the global object
     that uses Object's [[Get]] method to access the 'writable'
     property (8.10.5 step 6.a)
-includes:
-    - runTestCase.js
-    - fnGlobalObject.js
+includes: [fnGlobalObject.js]
 ---*/
 
-function testcase() {
-
-        try {
             fnGlobalObject().writable = true;
 
             var newObj = Object.create({}, {
@@ -27,9 +22,5 @@ function testcase() {
 
             var afterWrite = (newObj.prop === "isWritable");
 
-            return beforeWrite === true && afterWrite === true;
-        } finally {
-            delete fnGlobalObject().writable;
-        }
-    }
-runTestCase(testcase);
+assert.sameValue(beforeWrite, true, 'beforeWrite');
+assert.sameValue(afterWrite, true, 'afterWrite');
diff --git a/test/built-ins/Object/create/15.2.3.5-4-251.js b/test/built-ins/Object/create/15.2.3.5-4-251.js
index 0e151bc1a1ed8764481f8d39afb534229eee3c98..eceff600f5aaa6945a6ed1c5cdc6430959d459dd 100644
--- a/test/built-ins/Object/create/15.2.3.5-4-251.js
+++ b/test/built-ins/Object/create/15.2.3.5-4-251.js
@@ -7,11 +7,8 @@ description: >
     Object.create - one property in 'Properties' is the Math object
     that uses Object's [[Get]] method to access the 'get' property
     (8.10.5 step 7.a)
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
-        try {
             Math.get = function () {
                 return "VerifyMathObject";
             };
@@ -20,9 +17,4 @@ function testcase() {
                 prop: Math 
             });
 
-            return newObj.prop === "VerifyMathObject";
-        } finally {
-            delete Math.get;
-        }
-    }
-runTestCase(testcase);
+assert.sameValue(newObj.prop, "VerifyMathObject", 'newObj.prop');
diff --git a/test/built-ins/Object/create/15.2.3.5-4-252.js b/test/built-ins/Object/create/15.2.3.5-4-252.js
index a83e2bd454df558cf506f86aee4ad87cf2cb360f..e5cd76b909cb4917d5fba21b48d075bc49ad2f29 100644
--- a/test/built-ins/Object/create/15.2.3.5-4-252.js
+++ b/test/built-ins/Object/create/15.2.3.5-4-252.js
@@ -7,22 +7,14 @@ description: >
     Object.create - one property in 'Properties' is the JSON object
     that uses Object's [[Get]] method to access the 'get' property
     (8.10.5 step 7.a)
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
         JSON.get = function () {
             return "VerifyJSONObject";
         };
 
-        try {
             var newObj = Object.create({}, {
                 prop: JSON 
             });
 
-            return newObj.prop === "VerifyJSONObject";
-        } finally {
-            delete JSON.get;
-        }
-    }
-runTestCase(testcase);
+assert.sameValue(newObj.prop, "VerifyJSONObject", 'newObj.prop');
diff --git a/test/built-ins/Object/create/15.2.3.5-4-256.js b/test/built-ins/Object/create/15.2.3.5-4-256.js
index 1d7146537816d0d33cb2bb8a7c6ba8caa54ff803..6f35538fe1020b1f12ebf85ccf6a66be2aa42c55 100644
--- a/test/built-ins/Object/create/15.2.3.5-4-256.js
+++ b/test/built-ins/Object/create/15.2.3.5-4-256.js
@@ -7,24 +7,15 @@ description: >
     Object.create - one property in 'Properties' is the global object
     that uses Object's [[Get]] method to access the 'get' property
     (8.10.5 step 7.a)
-includes:
-    - runTestCase.js
-    - fnGlobalObject.js
+includes: [fnGlobalObject.js]
 ---*/
 
-function testcase() {
         fnGlobalObject().get = function () {
             return "VerifyGlobalObject";
         };
 
-        try {
             var newObj = Object.create({}, {
                 prop: fnGlobalObject()
             });
 
-            return newObj.prop === "VerifyGlobalObject";
-        } finally {
-            delete fnGlobalObject().get;
-        }
-    }
-runTestCase(testcase);
+assert.sameValue(newObj.prop, "VerifyGlobalObject", 'newObj.prop');
diff --git a/test/built-ins/Object/create/15.2.3.5-4-284.js b/test/built-ins/Object/create/15.2.3.5-4-284.js
index 53769b792c8add69f8f28a142adafb6c370f70ce..58777acf28f4a0c8c20471923c0e7c7a932de8f2 100644
--- a/test/built-ins/Object/create/15.2.3.5-4-284.js
+++ b/test/built-ins/Object/create/15.2.3.5-4-284.js
@@ -7,13 +7,10 @@ description: >
     Object.create - one property in 'Properties' is the Math object
     that uses Object's [[Get]] method to access the 'set' property
     (8.10.5 step 8.a)
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
         var data = "data";
 
-        try {
             Math.set = function (value) {
                 data = value;
             };
@@ -26,9 +23,5 @@ function testcase() {
 
             newObj.prop = "overrideData";
 
-            return hasProperty && data === "overrideData";
-        } finally {
-            delete Math.set;
-        }
-    }
-runTestCase(testcase);
+assert(hasProperty, 'hasProperty !== true');
+assert.sameValue(data, "overrideData", 'data');
diff --git a/test/built-ins/Object/create/15.2.3.5-4-287.js b/test/built-ins/Object/create/15.2.3.5-4-287.js
index baa187b600c456a7804e4f33a167d11bd6438749..6057e68fbb5bac8890d8c0c5b6edb31feb104591 100644
--- a/test/built-ins/Object/create/15.2.3.5-4-287.js
+++ b/test/built-ins/Object/create/15.2.3.5-4-287.js
@@ -7,13 +7,10 @@ description: >
     Object.create - one property in 'Properties' is the JSON object
     that uses Object's [[Get]] method to access the 'set' property
     (8.10.5 step 8.a)
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
         var data = "data";
 
-        try {
             JSON.set = function (value) {
                 data = value;
             };
@@ -26,9 +23,5 @@ function testcase() {
 
             newObj.prop = "overrideData";
 
-            return hasProperty && data === "overrideData";
-        } finally {
-            delete JSON.set;
-        }
-    }
-runTestCase(testcase);
+assert(hasProperty, 'hasProperty !== true');
+assert.sameValue(data, "overrideData", 'data');
diff --git a/test/built-ins/Object/create/15.2.3.5-4-291.js b/test/built-ins/Object/create/15.2.3.5-4-291.js
index 4ffc2d5d390e57f0d80ddc2f40d9e0268986ddde..b5d8d69e6ffebea3d25491556dcf1d6370e72714 100644
--- a/test/built-ins/Object/create/15.2.3.5-4-291.js
+++ b/test/built-ins/Object/create/15.2.3.5-4-291.js
@@ -7,15 +7,11 @@ description: >
     Object.create - one property in 'Properties' is the global object
     that uses Object's [[Get]] method to access the 'set' property
     (8.10.5 step 8.a)
-includes:
-    - runTestCase.js
-    - fnGlobalObject.js
+includes: [fnGlobalObject.js]
 ---*/
 
-function testcase() {
         var data = "data";
 
-        try {
             fnGlobalObject().set = function (value) {
                 data = value;
             };
@@ -28,9 +24,5 @@ function testcase() {
 
             newObj.prop = "overrideData";
 
-            return hasProperty && data === "overrideData";
-        } finally {
-            delete fnGlobalObject().set;
-        }
-    }
-runTestCase(testcase);
+assert(hasProperty, 'hasProperty !== true');
+assert.sameValue(data, "overrideData", 'data');
diff --git a/test/built-ins/Object/create/15.2.3.5-4-33.js b/test/built-ins/Object/create/15.2.3.5-4-33.js
index 66d7d0febaad9536127adb4e4efeeab503758ec4..28684d926b08a48510cd0832dfa8088efeda76db 100644
--- a/test/built-ins/Object/create/15.2.3.5-4-33.js
+++ b/test/built-ins/Object/create/15.2.3.5-4-33.js
@@ -7,20 +7,12 @@ description: >
     Object.create - 'Properties' is the Math object that uses Object's
     [[Get]] method to access own enumerable property (15.2.3.7 step
     5.a)
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
-
-        try {
             Math.prop = {
                 value: 12,
                 enumerable: true
             };
             var newObj = Object.create({}, Math);
-            return newObj.hasOwnProperty("prop");
-        } finally {
-            delete Math.prop;
-        }
-    }
-runTestCase(testcase);
+
+assert(newObj.hasOwnProperty("prop"), 'newObj.hasOwnProperty("prop") !== true');
diff --git a/test/built-ins/Object/create/15.2.3.5-4-36.js b/test/built-ins/Object/create/15.2.3.5-4-36.js
index 09a48c2ef90e3b82cdd071ae45b52551e45e5f9a..f11823460e1397496ac32528fc2424a17e389c3d 100644
--- a/test/built-ins/Object/create/15.2.3.5-4-36.js
+++ b/test/built-ins/Object/create/15.2.3.5-4-36.js
@@ -7,20 +7,12 @@ description: >
     Object.create - 'Properties' is the JSON object that uses Object's
     [[Get]] method to access own enumerable property (15.2.3.7 step
     5.a)
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
-
-        try {
             JSON.prop = {
                 value: 12,
                 enumerable: true
             };
             var newObj = Object.create({}, JSON);
-            return newObj.hasOwnProperty("prop");
-        } finally {
-            delete JSON.prop;
-        }
-    }
-runTestCase(testcase);
+
+assert(newObj.hasOwnProperty("prop"), 'newObj.hasOwnProperty("prop") !== true');
diff --git a/test/built-ins/Object/create/15.2.3.5-4-64.js b/test/built-ins/Object/create/15.2.3.5-4-64.js
index 084b73b371c65dbf06dbe37b3f887a146061f385..dcb8a6f233f9162c7e29f5d834c7863bbee55275 100644
--- a/test/built-ins/Object/create/15.2.3.5-4-64.js
+++ b/test/built-ins/Object/create/15.2.3.5-4-64.js
@@ -7,14 +7,10 @@ description: >
     Object.create - one property in 'Properties' is the Math object
     that uses Object's [[Get]] method to access the 'enumerable'
     property (8.10.5 step 3.a)
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
-
         var accessed = false;
 
-        try {
             Math.enumerable = true;
 
             var newObj = Object.create({}, {
@@ -25,9 +21,5 @@ function testcase() {
                     accessed = true;
                 }
             }
-            return accessed;
-        } finally {
-            delete Math.enumerable;
-        }
-    }
-runTestCase(testcase);
+
+assert(accessed, 'accessed !== true');
diff --git a/test/built-ins/Object/create/15.2.3.5-4-67.js b/test/built-ins/Object/create/15.2.3.5-4-67.js
index ba562de19cdb45c5cb7173a37669a0fde9267f27..c9daddf94bf2f5323e26239521ba4c7432554f47 100644
--- a/test/built-ins/Object/create/15.2.3.5-4-67.js
+++ b/test/built-ins/Object/create/15.2.3.5-4-67.js
@@ -7,14 +7,10 @@ description: >
     Object.create - one property in 'Properties' is the JSON object
     that uses Object's [[Get]] method to access the 'enumerable'
     property (8.10.5 step 3.a)
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
-
         var accessed = false;
 
-        try {
             JSON.enumerable = true;
 
             var newObj = Object.create({}, {
@@ -25,9 +21,5 @@ function testcase() {
                     accessed = true;
                 }
             }
-            return accessed;
-        } finally {
-            delete JSON.enumerable;
-        }
-    }
-runTestCase(testcase);
+
+assert(accessed, 'accessed !== true');
diff --git a/test/built-ins/Object/create/15.2.3.5-4-71.js b/test/built-ins/Object/create/15.2.3.5-4-71.js
index c95e3f3c4eb96a88bff3cc0e75a2a5df998a7d90..9d7dc1fcc98271ce60c5337dc1c3069886469e0c 100644
--- a/test/built-ins/Object/create/15.2.3.5-4-71.js
+++ b/test/built-ins/Object/create/15.2.3.5-4-71.js
@@ -7,16 +7,11 @@ description: >
     Object.create - one property in 'Properties' is the global object
     that uses Object's [[Get]] method to access the 'enumerable'
     property (8.10.5 step 3.a)
-includes:
-    - runTestCase.js
-    - fnGlobalObject.js
+includes: [fnGlobalObject.js]
 ---*/
 
-function testcase() {
-
         var accessed = false;
 
-        try {
             fnGlobalObject().enumerable = true;
 
             var newObj = Object.create({}, {
@@ -27,9 +22,5 @@ function testcase() {
                     accessed = true;
                 }
             }
-            return accessed;
-        } finally {
-            delete fnGlobalObject().enumerable;
-        }
-    }
-runTestCase(testcase);
+
+assert(accessed, 'accessed !== true');
diff --git a/test/built-ins/Object/defineProperties/15.2.3.7-2-11.js b/test/built-ins/Object/defineProperties/15.2.3.7-2-11.js
index f80dde26540036951e0ddaecd4a1838d284c9bee..49e5f420847b14f74fd31140ed3eabad0c0513c7 100644
--- a/test/built-ins/Object/defineProperties/15.2.3.7-2-11.js
+++ b/test/built-ins/Object/defineProperties/15.2.3.7-2-11.js
@@ -4,15 +4,11 @@
 /*---
 es5id: 15.2.3.7-2-11
 description: Object.defineProperties - argument 'Properties' is the Math object
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
-
         var obj = {};
         var result = false;
-       
-        try {
+
             Object.defineProperty(Math, "prop", {
                 get: function () {
                     result = (this === Math);
@@ -23,9 +19,5 @@ function testcase() {
             });
 
             Object.defineProperties(obj, Math);
-            return result;
-        } finally {
-            delete Math.prop;
-        }
-    }
-runTestCase(testcase);
+
+assert(result, 'result !== true');
diff --git a/test/built-ins/Object/defineProperties/15.2.3.7-2-14.js b/test/built-ins/Object/defineProperties/15.2.3.7-2-14.js
index bb72313cfe7436006f5fec1a1181c5eb7d8d1189..4cb5a056a8872f56f320c1dddb39cd23e7e6ca49 100644
--- a/test/built-ins/Object/defineProperties/15.2.3.7-2-14.js
+++ b/test/built-ins/Object/defineProperties/15.2.3.7-2-14.js
@@ -4,15 +4,11 @@
 /*---
 es5id: 15.2.3.7-2-14
 description: Object.defineProperties - argument 'Properties' is the JSON object
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
-
         var obj = {};
         var result = false;
 
-        try {
             Object.defineProperty(JSON, "prop", {
                 get: function () {
                     result = (this === JSON);
@@ -23,9 +19,5 @@ function testcase() {
             });
 
             Object.defineProperties(obj, JSON);
-            return result;
-        } finally {
-            delete JSON.prop;
-        }
-    }
-runTestCase(testcase);
+
+assert(result, 'result !== true');
diff --git a/test/built-ins/Object/defineProperties/15.2.3.7-2-18.js b/test/built-ins/Object/defineProperties/15.2.3.7-2-18.js
index afd10e3f1c1aa5c155645e7769309869b3aded16..54d63f93e84ab1efdcbb279f130bf466c9c78e5e 100644
--- a/test/built-ins/Object/defineProperties/15.2.3.7-2-18.js
+++ b/test/built-ins/Object/defineProperties/15.2.3.7-2-18.js
@@ -6,13 +6,9 @@ es5id: 15.2.3.7-2-18
 description: >
     Object.defineProperties - argument 'Properties' is the global
     object
-includes:
-    - runTestCase.js
-    - fnGlobalObject.js
+includes: [fnGlobalObject.js]
 ---*/
 
-function testcase() {
-
         var obj = {};
         var result = false;
 
@@ -27,11 +23,11 @@ function testcase() {
             });
 
             Object.defineProperties(obj, fnGlobalObject());
-            return result;
         } catch (e) {
-            return (e instanceof TypeError);
+            if (!(e instanceof TypeError)) throw e;
+            result = true;
         } finally {
             delete fnGlobalObject().prop;
         }
-    }
-runTestCase(testcase);
+
+assert(result, 'result !== true');
diff --git a/test/built-ins/Object/defineProperties/15.2.3.7-5-a-12.js b/test/built-ins/Object/defineProperties/15.2.3.7-5-a-12.js
index 22d61ff94abdcf773e8c62b6170959f635ecc9ce..f13acf2b5da5a633d5ac058119c94630527f519c 100644
--- a/test/built-ins/Object/defineProperties/15.2.3.7-5-a-12.js
+++ b/test/built-ins/Object/defineProperties/15.2.3.7-5-a-12.js
@@ -6,22 +6,14 @@ es5id: 15.2.3.7-5-a-12
 description: >
     Object.defineProperties - 'Properties' is the Math object which
     implements its own [[Get]] method to get enumerable own property
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
-
         var obj = {};
 
-        try {
             Math.prop = {
                 value: 12
             };
             Object.defineProperties(obj, Math);
 
-            return obj.hasOwnProperty("prop") && obj.prop === 12;
-        } finally {
-            delete Math.prop;
-        }
-    }
-runTestCase(testcase);
+assert(obj.hasOwnProperty("prop"), 'obj.hasOwnProperty("prop") !== true');
+assert.sameValue(obj.prop, 12, 'obj.prop');
diff --git a/test/built-ins/Object/defineProperties/15.2.3.7-5-a-15.js b/test/built-ins/Object/defineProperties/15.2.3.7-5-a-15.js
index 910a260ecd5261b38c0f0ae8a2cae4034cf213eb..07dc678c47d25ebb3c0c36f9cd06836d5e2f8ffa 100644
--- a/test/built-ins/Object/defineProperties/15.2.3.7-5-a-15.js
+++ b/test/built-ins/Object/defineProperties/15.2.3.7-5-a-15.js
@@ -6,21 +6,14 @@ es5id: 15.2.3.7-5-a-15
 description: >
     Object.defineProperties - 'Properties' is the JSON object which
     implements its own [[Get]] method to get enumerable own property
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
         var obj = {};
 
-        try {
             JSON.prop = {
                 value: 15
             };
             Object.defineProperties(obj, JSON);
 
-            return obj.hasOwnProperty("prop") && obj.prop === 15;
-        } finally {
-            delete JSON.prop;
-        }
-    }
-runTestCase(testcase);
+assert(obj.hasOwnProperty("prop"), 'obj.hasOwnProperty("prop") !== true');
+assert.sameValue(obj.prop, 15, 'obj.prop');
diff --git a/test/built-ins/Object/defineProperties/15.2.3.7-5-b-130.js b/test/built-ins/Object/defineProperties/15.2.3.7-5-b-130.js
index 93b8a95614011a134cc9a31fa4d70564fa89e8cd..75eb5a7de6144199c0522534372293426ee1ae06 100644
--- a/test/built-ins/Object/defineProperties/15.2.3.7-5-b-130.js
+++ b/test/built-ins/Object/defineProperties/15.2.3.7-5-b-130.js
@@ -7,22 +7,14 @@ description: >
     Object.defineProperties - 'descObj' is the Math object which
     implements its own [[Get]] method to get 'value' property (8.10.5
     step 5.a)
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
         var obj = {};
 
-        try {
             Math.value = "Math";
 
             Object.defineProperties(obj, {
                 property: Math
             });
 
-            return obj.property === "Math";
-        } finally {
-            delete Math.value;
-        }
-    }
-runTestCase(testcase);
+assert.sameValue(obj.property, "Math", 'obj.property');
diff --git a/test/built-ins/Object/defineProperties/15.2.3.7-5-b-133.js b/test/built-ins/Object/defineProperties/15.2.3.7-5-b-133.js
index 809669eb3631dd542bd5da86570476e706fb138a..75d124af0d79d5029d4a421bac8f066862348428 100644
--- a/test/built-ins/Object/defineProperties/15.2.3.7-5-b-133.js
+++ b/test/built-ins/Object/defineProperties/15.2.3.7-5-b-133.js
@@ -7,22 +7,14 @@ description: >
     Object.defineProperties - 'descObj' is the JSON object which
     implements its own [[Get]] method to get 'value' property (8.10.5
     step 5.a)
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
         var obj = {};
 
-        try {
             JSON.value = "JSON";
 
             Object.defineProperties(obj, {
                 property: JSON
             });
 
-            return obj.property === "JSON";
-        } finally {
-            delete JSON.value;
-        }
-    }
-runTestCase(testcase);
+assert.sameValue(obj.property, "JSON", 'obj.property');
diff --git a/test/built-ins/Object/defineProperties/15.2.3.7-5-b-137.js b/test/built-ins/Object/defineProperties/15.2.3.7-5-b-137.js
index a48e632b2fbc1cdae58e9faa73519eda75a04dff..00afd773fdb3f67fb1ca684fd2a57909f47b1ccb 100644
--- a/test/built-ins/Object/defineProperties/15.2.3.7-5-b-137.js
+++ b/test/built-ins/Object/defineProperties/15.2.3.7-5-b-137.js
@@ -7,24 +7,15 @@ description: >
     Object.defineProperties - 'descObj' is the global object which
     implements its own [[Get]] method to get 'value' property (8.10.5
     step 5.a)
-includes:
-    - runTestCase.js
-    - fnGlobalObject.js
+includes: [fnGlobalObject.js]
 ---*/
 
-function testcase() {
         var obj = {};
 
-        try {
             fnGlobalObject().value = "global";
 
             Object.defineProperties(obj, {
                 property: fnGlobalObject()
             });
 
-            return obj.property === "global";
-        } finally {
-            delete fnGlobalObject().value;
-        }
-    }
-runTestCase(testcase);
+assert.sameValue(obj.property, "global", 'obj.property');
diff --git a/test/built-ins/Object/defineProperties/15.2.3.7-5-b-156.js b/test/built-ins/Object/defineProperties/15.2.3.7-5-b-156.js
index 107e823c38d3f4985a252552e8395f751135ad8b..c578ae4f7bf0f19cee404123ae3711771f51c778 100644
--- a/test/built-ins/Object/defineProperties/15.2.3.7-5-b-156.js
+++ b/test/built-ins/Object/defineProperties/15.2.3.7-5-b-156.js
@@ -13,7 +13,6 @@ includes: [propertyHelper.js]
 
 var obj = {};
 
-try {
     Math.writable = false;
 
     Object.defineProperties(obj, {
@@ -22,7 +21,3 @@ try {
 
     assert(obj.hasOwnProperty("property"));
     verifyNotWritable(obj, "property");
-
-} finally {
-    delete Math.writable;
-}
diff --git a/test/built-ins/Object/defineProperties/15.2.3.7-5-b-159.js b/test/built-ins/Object/defineProperties/15.2.3.7-5-b-159.js
index c7d08c0a2c88cfc01498ea0e9b8e214f80c2fb2d..9bd06f4ef25bb91fad2f58db653a9591e86adde7 100644
--- a/test/built-ins/Object/defineProperties/15.2.3.7-5-b-159.js
+++ b/test/built-ins/Object/defineProperties/15.2.3.7-5-b-159.js
@@ -12,7 +12,6 @@ includes: [propertyHelper.js]
 
 var obj = {};
 
-try {
     JSON.writable = false;
 
     Object.defineProperties(obj, {
@@ -21,8 +20,3 @@ try {
 
     assert(obj.hasOwnProperty("property"));
     verifyNotWritable(obj, "property");
-
-} finally {
-    delete JSON.writable;
-}
-
diff --git a/test/built-ins/Object/defineProperties/15.2.3.7-5-b-163.js b/test/built-ins/Object/defineProperties/15.2.3.7-5-b-163.js
index 9806652a95093d1c6daf7a59f97677f77e298c4a..c508455ca5646fc6d8049cf486a08699a8734e1f 100644
--- a/test/built-ins/Object/defineProperties/15.2.3.7-5-b-163.js
+++ b/test/built-ins/Object/defineProperties/15.2.3.7-5-b-163.js
@@ -15,7 +15,6 @@ includes:
 
 var obj = {};
 
-try {
     fnGlobalObject().writable = false;
 
     Object.defineProperties(obj, {
@@ -24,9 +23,3 @@ try {
 
     assert(obj.hasOwnProperty("property"));
     verifyNotWritable(obj, "property");
-
-} finally {
-    delete fnGlobalObject().writable;
-}
-
-
diff --git a/test/built-ins/Object/defineProperties/15.2.3.7-5-b-209.js b/test/built-ins/Object/defineProperties/15.2.3.7-5-b-209.js
index 1cd1a9b68213d522b38c492616323f51e24b0090..a4dec6de0946d689d5f6d99a66150bd19051c120 100644
--- a/test/built-ins/Object/defineProperties/15.2.3.7-5-b-209.js
+++ b/test/built-ins/Object/defineProperties/15.2.3.7-5-b-209.js
@@ -7,14 +7,10 @@ description: >
     Object.defineProperties - 'descObj' is the Math object which
     implements its own [[Get]] method to get 'get' property (8.10.5
     step 7.a)
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
-
         var obj = {};
 
-        try {
             Math.get = function () {
                 return "Math";
             };
@@ -23,9 +19,4 @@ function testcase() {
                 property: Math
             });
 
-            return obj.property === "Math";
-        } finally {
-            delete Math.get;
-        }
-    }
-runTestCase(testcase);
+assert.sameValue(obj.property, "Math", 'obj.property');
diff --git a/test/built-ins/Object/defineProperties/15.2.3.7-5-b-212.js b/test/built-ins/Object/defineProperties/15.2.3.7-5-b-212.js
index 12cb398e1cbfe4fd8b939d85c1985f477d071942..75f7d4a4917ba1680025e14b88f776142e57748b 100644
--- a/test/built-ins/Object/defineProperties/15.2.3.7-5-b-212.js
+++ b/test/built-ins/Object/defineProperties/15.2.3.7-5-b-212.js
@@ -7,14 +7,10 @@ description: >
     Object.defineProperties - 'descObj' is the JSON object which
     implements its own [[Get]] method to get 'get' property (8.10.5
     step 7.a)
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
-
         var obj = {};
 
-        try {
             JSON.get = function () {
                 return "JSON";
             };
@@ -23,9 +19,4 @@ function testcase() {
                 property: JSON
             });
 
-            return obj.property === "JSON";
-        } finally {
-            delete JSON.get;
-        }
-    }
-runTestCase(testcase);
+assert.sameValue(obj.property, "JSON", 'obj.property');
diff --git a/test/built-ins/Object/defineProperties/15.2.3.7-5-b-216.js b/test/built-ins/Object/defineProperties/15.2.3.7-5-b-216.js
index eb919238edb30e984f2167de501ba698f50a9384..c68a952263faa4bea5b60ea073ce8472e536e733 100644
--- a/test/built-ins/Object/defineProperties/15.2.3.7-5-b-216.js
+++ b/test/built-ins/Object/defineProperties/15.2.3.7-5-b-216.js
@@ -7,16 +7,11 @@ description: >
     Object.defineProperties - 'descObj' is the global object which
     implements its own [[Get]] method to get 'get' property (8.10.5
     step 7.a)
-includes:
-    - runTestCase.js
-    - fnGlobalObject.js
+includes: [fnGlobalObject.js]
 ---*/
 
-function testcase() {
-
         var obj = {};
 
-        try {
             fnGlobalObject().get = function () {
                 return "global";
             };
@@ -25,9 +20,4 @@ function testcase() {
                 property: fnGlobalObject()
             });
 
-            return obj.property === "global";
-        } finally {
-            delete fnGlobalObject().get;
-        }
-    }
-runTestCase(testcase);
+assert.sameValue(obj.property, "global", 'obj.property');
diff --git a/test/built-ins/Object/defineProperties/15.2.3.7-5-b-24.js b/test/built-ins/Object/defineProperties/15.2.3.7-5-b-24.js
index fd15eac7549deb7389fb2dda3ea323c224cb4916..bab103cc60a3be117506b835ffafa91c8f903d7b 100644
--- a/test/built-ins/Object/defineProperties/15.2.3.7-5-b-24.js
+++ b/test/built-ins/Object/defineProperties/15.2.3.7-5-b-24.js
@@ -7,15 +7,11 @@ description: >
     Object.defineProperties - 'descObj' is the Math object which
     implements its own [[Get]] method to get 'enumerable' property
     (8.10.5 step 3.a)
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
-
         var obj = {};
         var accessed = false;
 
-        try {
             Math.enumerable = true;
 
             Object.defineProperties(obj, {
@@ -26,9 +22,5 @@ function testcase() {
                     accessed = true;
                 }
             }
-            return accessed;
-        } finally {
-            delete Math.enumerable;
-        }
-    }
-runTestCase(testcase);
+
+assert(accessed, 'accessed !== true');
diff --git a/test/built-ins/Object/defineProperties/15.2.3.7-5-b-244.js b/test/built-ins/Object/defineProperties/15.2.3.7-5-b-244.js
index e002547ee668cc698edcfc7f73de1e0c05cd4632..5324d033487f34e902836079979681c0ba16a231 100644
--- a/test/built-ins/Object/defineProperties/15.2.3.7-5-b-244.js
+++ b/test/built-ins/Object/defineProperties/15.2.3.7-5-b-244.js
@@ -7,16 +7,13 @@ description: >
     Object.defineProperties - 'descObj' is the Math object which
     implements its own [[Get]] method to get 'set' property (8.10.5
     step 8.a)
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
-
         var data = "data";
         var setFun = function (value) {
             data = value;
         };
-        try {
+
             Math.prop = {
                 set: setFun
             };
@@ -24,9 +21,6 @@ function testcase() {
             var obj = {};
             Object.defineProperties(obj, Math);
             obj.prop = "mathData";
-            return obj.hasOwnProperty("prop") && data === "mathData";
-        } finally {
-            delete Math.prop;
-        }
-    }
-runTestCase(testcase);
+
+assert(obj.hasOwnProperty("prop"), 'obj.hasOwnProperty("prop") !== true');
+assert.sameValue(data, "mathData", 'data');
diff --git a/test/built-ins/Object/defineProperties/15.2.3.7-5-b-247.js b/test/built-ins/Object/defineProperties/15.2.3.7-5-b-247.js
index b43663fa129aa3a287a89c81b8fed675af967cfd..c0815c7b0449ade5c576a5fe04b74d0192390f47 100644
--- a/test/built-ins/Object/defineProperties/15.2.3.7-5-b-247.js
+++ b/test/built-ins/Object/defineProperties/15.2.3.7-5-b-247.js
@@ -7,16 +7,13 @@ description: >
     Object.defineProperties - 'descObj' is the JSON object which
     implements its own [[Get]] method to get 'set' property (8.10.5
     step 8.a)
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
-
         var data = "data";
         var setFun = function (value) {
             data = value;
         };
-        try {
+
             JSON.prop = {
                 set: setFun
             };
@@ -24,9 +21,6 @@ function testcase() {
             var obj = {};
             Object.defineProperties(obj, JSON);
             obj.prop = "JSONData";
-            return obj.hasOwnProperty("prop") && data === "JSONData";
-        } finally {
-            delete JSON.prop;
-        }
-    }
-runTestCase(testcase);
+
+assert(obj.hasOwnProperty("prop"), 'obj.hasOwnProperty("prop") !== true');
+assert.sameValue(data, "JSONData", 'data');
diff --git a/test/built-ins/Object/defineProperties/15.2.3.7-5-b-27.js b/test/built-ins/Object/defineProperties/15.2.3.7-5-b-27.js
index 7c99c4277ba9aac80a56325f91403ae3509c579b..900b3b09037b17844ca4f916675306a0233fbc72 100644
--- a/test/built-ins/Object/defineProperties/15.2.3.7-5-b-27.js
+++ b/test/built-ins/Object/defineProperties/15.2.3.7-5-b-27.js
@@ -7,15 +7,11 @@ description: >
     Object.defineProperties - 'descObj' is the JSON object which
     implements its own [[Get]] method to get 'enumerable' property
     (8.10.5 step 3.a)
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
-
         var obj = {};
         var accessed = false;
 
-        try {
             JSON.enumerable = true;
 
             Object.defineProperties(obj, {
@@ -26,9 +22,5 @@ function testcase() {
                     accessed = true;
                 }
             }
-            return accessed;
-        } finally {
-            delete JSON.enumerable;
-        }
-    }
-runTestCase(testcase);
+
+assert(accessed, 'accessed !== true');
diff --git a/test/built-ins/Object/defineProperties/15.2.3.7-5-b-31.js b/test/built-ins/Object/defineProperties/15.2.3.7-5-b-31.js
index bead27b7f5bf0b402e91d3204074182c44ec7d60..7c1a48bc1f122899dde7b0e9987b8f22a20ec515 100644
--- a/test/built-ins/Object/defineProperties/15.2.3.7-5-b-31.js
+++ b/test/built-ins/Object/defineProperties/15.2.3.7-5-b-31.js
@@ -7,17 +7,12 @@ description: >
     Object.defineProperties - 'descObj' is the global object which
     implements its own [[Get]] method to get 'enumerable' property
     (8.10.5 step 3.a)
-includes:
-    - runTestCase.js
-    - fnGlobalObject.js
+includes: [fnGlobalObject.js]
 ---*/
 
-function testcase() {
-
         var obj = {};
         var accessed = false;
 
-        try {
             fnGlobalObject().enumerable = true;
 
             Object.defineProperties(obj, {
@@ -28,9 +23,5 @@ function testcase() {
                     accessed = true;
                 }
             }
-            return accessed;
-        } finally {
-            delete fnGlobalObject().enumerable;
-        }
-    }
-runTestCase(testcase);
+
+assert(accessed, 'accessed !== true');
diff --git a/test/built-ins/Object/defineProperties/15.2.3.7-5-b-77.js b/test/built-ins/Object/defineProperties/15.2.3.7-5-b-77.js
index f3794aa359dfbd787a32fd30bddf3ec30f0a236f..44f4984253da287177689594776fce81f1169afc 100644
--- a/test/built-ins/Object/defineProperties/15.2.3.7-5-b-77.js
+++ b/test/built-ins/Object/defineProperties/15.2.3.7-5-b-77.js
@@ -7,14 +7,10 @@ description: >
     Object.defineProperties - 'descObj' is the Math object which
     implements its own [[Get]] method to get 'configurable' property
     (8.10.5 step 4.a)
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
-
         var obj = {};
 
-        try {
             Math.configurable = true;
 
             Object.defineProperties(obj, {
@@ -25,9 +21,5 @@ function testcase() {
             delete obj.prop;
             var result2 = obj.hasOwnProperty("prop");
 
-            return result1 === true && result2 === false;
-        } finally {
-            delete Math.configurable;
-        }
-    }
-runTestCase(testcase);
+assert.sameValue(result1, true, 'result1');
+assert.sameValue(result2, false, 'result2');
diff --git a/test/built-ins/Object/defineProperties/15.2.3.7-5-b-80.js b/test/built-ins/Object/defineProperties/15.2.3.7-5-b-80.js
index a37654d68db4048ffa71a0b99554227baa6377f8..99ab9c52547ed306ec779d8a62e90140fdc4b22b 100644
--- a/test/built-ins/Object/defineProperties/15.2.3.7-5-b-80.js
+++ b/test/built-ins/Object/defineProperties/15.2.3.7-5-b-80.js
@@ -7,14 +7,10 @@ description: >
     Object.defineProperties - 'descObj' is the JSON object which
     implements its own [[Get]] method to get 'configurable' property
     (8.10.5 step 4.a)
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
-
         var obj = {};
 
-        try {
             JSON.configurable = true;
 
             Object.defineProperties(obj, {
@@ -25,9 +21,5 @@ function testcase() {
             delete obj.prop;
             var result2 = obj.hasOwnProperty("prop");
 
-            return result1 === true && result2 === false;
-        } finally {
-            delete JSON.configurable;
-        }
-    }
-runTestCase(testcase);
+assert.sameValue(result1, true, 'result1');
+assert.sameValue(result2, false, 'result2');
diff --git a/test/built-ins/Object/defineProperties/15.2.3.7-5-b-84.js b/test/built-ins/Object/defineProperties/15.2.3.7-5-b-84.js
index ceafc60be8bda61c13e89b35a26d1e5a0037f089..e0babbe9d1d0cf823c9c951478c338a3adc3f2ff 100644
--- a/test/built-ins/Object/defineProperties/15.2.3.7-5-b-84.js
+++ b/test/built-ins/Object/defineProperties/15.2.3.7-5-b-84.js
@@ -7,16 +7,11 @@ description: >
     Object.defineProperties - 'descObj' is the global object which
     implements its own [[Get]] method to get 'configurable' property
     (8.10.5 step 4.a)
-includes:
-    - runTestCase.js
-    - fnGlobalObject.js
+includes: [fnGlobalObject.js]
 ---*/
 
-function testcase() {
-
         var obj = {};
 
-        try {
             fnGlobalObject().configurable = true;
 
             Object.defineProperties(obj, {
@@ -27,9 +22,5 @@ function testcase() {
             delete obj.prop;
             var result2 = obj.hasOwnProperty("prop");
 
-            return result1 === true && result2 === false;
-        } finally {
-            delete fnGlobalObject().configurable;
-        }
-    }
-runTestCase(testcase);
+assert.sameValue(result1, true, 'result1');
+assert.sameValue(result2, false, 'result2');
diff --git a/test/built-ins/Object/defineProperties/15.2.3.7-6-a-113.js b/test/built-ins/Object/defineProperties/15.2.3.7-6-a-113.js
index bad68510e56f098f5759fa2987672dc68773d51e..e9286e341257da3543c685783c0f3e6dd6dfa825 100644
--- a/test/built-ins/Object/defineProperties/15.2.3.7-6-a-113.js
+++ b/test/built-ins/Object/defineProperties/15.2.3.7-6-a-113.js
@@ -7,14 +7,12 @@ description: >
     Object.defineProperties - 'O' is an Array, test the length
     property of 'O' is own data property that overrides an inherited
     data property (15.4.5.1 step 1)
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
-
         var arrProtoLen;
         var arr = [0, 1, 2];
-        try {
+
+assert.throws(TypeError, function() {
             arrProtoLen = Array.prototype.length;
             Array.prototype.length = 0;
 
@@ -25,14 +23,10 @@ function testcase() {
             Object.defineProperties(arr, {
                 length: { value: 1 }
             });
-            return false;
-        } catch (e) {
-            var desc = Object.getOwnPropertyDescriptor(arr, "length");
+});
 
-            return e instanceof TypeError && desc.value === 3 &&
-                desc.writable && !desc.enumerable && !desc.configurable;
-        } finally {
-            Array.prototype.length = arrProtoLen;
-        }
-    }
-runTestCase(testcase);
+var desc = Object.getOwnPropertyDescriptor(arr, "length");
+assert.sameValue(desc.value, 3, 'desc.value');
+assert(desc.writable, 'desc.writable !== true');
+assert.sameValue(desc.enumerable, false, 'desc.enumerable');
+assert.sameValue(desc.configurable, false, 'desc.configurable');
diff --git a/test/built-ins/Object/defineProperties/15.2.3.7-6-a-167.js b/test/built-ins/Object/defineProperties/15.2.3.7-6-a-167.js
index b92b05178f787a82941de554ff98d3959c8d9c80..ac2bf44178e32286652c4a68ea07211b94486ffc 100644
--- a/test/built-ins/Object/defineProperties/15.2.3.7-6-a-167.js
+++ b/test/built-ins/Object/defineProperties/15.2.3.7-6-a-167.js
@@ -9,13 +9,10 @@ description: >
     of  the length property, test the [[Configurable]] attribute of
     inherited data property with large index named in 'O' can't stop
     deleting index named properties (15.4.5.1 step 3.l.ii)
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
-
         var arr = [0, 1];
-        try {
+
             Array.prototype[1] = 2; //we are not allowed to set the [[Configurable]] attribute of property "1" to false here, since Array.prototype is a global object, and non-configurbale property can't revert to configurable
 
             Object.defineProperties(arr, {
@@ -24,9 +21,7 @@ function testcase() {
                 }
             });
 
-            return arr.length === 1 && !arr.hasOwnProperty("1") && arr[0] === 0 && Array.prototype[1] === 2;
-        } finally {
-            delete Array.prototype[1];
-        }
-    }
-runTestCase(testcase);
+assert.sameValue(arr.length, 1, 'arr.length');
+assert.sameValue(arr.hasOwnProperty("1"), false, 'arr.hasOwnProperty("1")');
+assert.sameValue(arr[0], 0, 'arr[0]');
+assert.sameValue(Array.prototype[1], 2, 'Array.prototype[1]');
diff --git a/test/built-ins/Object/defineProperties/15.2.3.7-6-a-168.js b/test/built-ins/Object/defineProperties/15.2.3.7-6-a-168.js
index 98fb79d5bdd0a540d139ccf3c6baa56b3badacd4..c93f4a78e679cc66584bdd1fe52bc39e523a784e 100644
--- a/test/built-ins/Object/defineProperties/15.2.3.7-6-a-168.js
+++ b/test/built-ins/Object/defineProperties/15.2.3.7-6-a-168.js
@@ -10,13 +10,11 @@ description: >
     own data property with large index named in 'O' that overrides
     inherited data property can stop deleting index named properties
     (15.4.5.1 step 3.l.ii)
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
-    
         var arr = [0, 1];
-        try {
+
+assert.throws(TypeError, function() {
             Object.defineProperty(arr, "1", {
                 configurable: false
             });
@@ -28,12 +26,8 @@ function testcase() {
                     value: 1
                 }
             });
-            return false;
-        } catch (e) {
-            return e instanceof TypeError && arr.length === 2 &&
-                arr.hasOwnProperty("1") && arr[0] === 0 && arr[1] === 1;
-        } finally {
-            delete Array.prototype[1];
-        }
-    }
-runTestCase(testcase);
+});
+assert.sameValue(arr.length, 2, 'arr.length');
+assert(arr.hasOwnProperty("1"), 'arr.hasOwnProperty("1") !== true');
+assert.sameValue(arr[0], 0, 'arr[0]');
+assert.sameValue(arr[1], 1, 'arr[1]');
diff --git a/test/built-ins/Object/defineProperties/15.2.3.7-6-a-169.js b/test/built-ins/Object/defineProperties/15.2.3.7-6-a-169.js
index 0f956d96d65319a8e4dcea1175cb0b5169c5f8ed..0b72ac3d66773d8aca4ea83c8005b5207986a27f 100644
--- a/test/built-ins/Object/defineProperties/15.2.3.7-6-a-169.js
+++ b/test/built-ins/Object/defineProperties/15.2.3.7-6-a-169.js
@@ -10,13 +10,11 @@ description: >
     own data property with large index named in 'O' that overrides
     inherited accessor property can stop deleting index named
     properties (15.4.5.1 step 3.l.ii)
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
-    
         var arr = [0, 1];
-        try {
+
+assert.throws(TypeError, function() {
             Object.defineProperty(arr, "1", {
                 configurable: false
             });
@@ -33,13 +31,9 @@ function testcase() {
                     value: 1
                 }
             });
-
-            return false;
-        } catch (e) {
-            return e instanceof TypeError && arr.length === 2 && arr.hasOwnProperty("1") &&
-                arr[0] === 0 && arr[1] === 1 && Array.prototype[1] === 2;
-        } finally {
-            delete Array.prototype[1];
-        }
-    }
-runTestCase(testcase);
+});
+assert.sameValue(arr.length, 2, 'arr.length');
+assert(arr.hasOwnProperty("1"), 'arr.hasOwnProperty("1") !== true');
+assert.sameValue(arr[0], 0, 'arr[0]');
+assert.sameValue(arr[1], 1, 'arr[1]');
+assert.sameValue(Array.prototype[1], 2, 'Array.prototype[1]');
diff --git a/test/built-ins/Object/defineProperties/15.2.3.7-6-a-17.js b/test/built-ins/Object/defineProperties/15.2.3.7-6-a-17.js
index c50f5a9999c0ed8c95f44524798eb6eef5a7a22d..43bc0511bf8c3c2f530c056dcf51fc170164a16a 100644
--- a/test/built-ins/Object/defineProperties/15.2.3.7-6-a-17.js
+++ b/test/built-ins/Object/defineProperties/15.2.3.7-6-a-17.js
@@ -6,12 +6,8 @@ es5id: 15.2.3.7-6-a-17
 description: >
     Object.defineProperties - 'O' is the Math object which implements
     its own [[GetOwnProperty]] method to get 'P' (8.12.9 step 1 )
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
-
-        try {
             Object.defineProperty(Math, "prop", {
                 value: 11,
                 writable: true,
@@ -24,9 +20,6 @@ function testcase() {
                     value: 12
                 }
             });
-            return hasProperty && Math.prop === 12;
-        } finally {
-            delete Math.prop;
-        }
-    }
-runTestCase(testcase);
+
+assert(hasProperty, 'hasProperty !== true');
+assert.sameValue(Math.prop, 12, 'Math.prop');
diff --git a/test/built-ins/Object/defineProperties/15.2.3.7-6-a-171.js b/test/built-ins/Object/defineProperties/15.2.3.7-6-a-171.js
index f18a60dc6c523c6e619de74bf65a060dc825ca5a..ca3db2cb9314f6622edc235b323f1622af8d6f51 100644
--- a/test/built-ins/Object/defineProperties/15.2.3.7-6-a-171.js
+++ b/test/built-ins/Object/defineProperties/15.2.3.7-6-a-171.js
@@ -9,13 +9,10 @@ description: >
     of  the length property, test the [[Configurable]] attribute of
     inherited accessor property with large index named in 'O' can't
     stop deleting index named properties (15.4.5.1 step 3.l.ii)
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
-
         var arr = [0, 1];
-        try {
+
             Object.defineProperty(Array.prototype, "1", {
                 get: function () {
                     return 1;
@@ -29,9 +26,7 @@ function testcase() {
                 }
             });
 
-            return arr.length === 1 && !arr.hasOwnProperty("1") && arr[0] === 0 && Array.prototype[1] === 1;
-        } finally {
-            delete Array.prototype[1];
-        }
-    }
-runTestCase(testcase);
+assert.sameValue(arr.length, 1, 'arr.length');
+assert.sameValue(arr.hasOwnProperty("1"), false, 'arr.hasOwnProperty("1")');
+assert.sameValue(arr[0], 0, 'arr[0]');
+assert.sameValue(Array.prototype[1], 1, 'Array.prototype[1]');
diff --git a/test/built-ins/Object/defineProperties/15.2.3.7-6-a-172.js b/test/built-ins/Object/defineProperties/15.2.3.7-6-a-172.js
index cc9e90c154dbd02c5526a94a68a7568880b86f9b..9386995591e0b0ed7048580a582296034dfdafb3 100644
--- a/test/built-ins/Object/defineProperties/15.2.3.7-6-a-172.js
+++ b/test/built-ins/Object/defineProperties/15.2.3.7-6-a-172.js
@@ -10,13 +10,11 @@ description: >
     own accessor property with large index named in 'O' that overrides
     inherited data property can stop deleting index named properties
     (15.4.5.1 step 3.l.ii)
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
-    
         var arr = [0, 1];
-        try {
+
+assert.throws(TypeError, function() {
             Object.defineProperty(arr, "1", {
                 get: function () {
                     return 2;
@@ -31,12 +29,8 @@ function testcase() {
                     value: 1
                 }
             });
-            return false;
-        } catch (e) {
-            return e instanceof TypeError && arr.length === 2 &&
-                arr.hasOwnProperty("1") && arr[0] === 0 && arr[1] === 2;
-        } finally {
-            delete Array.prototype[1];
-        }
-    }
-runTestCase(testcase);
+});
+assert.sameValue(arr.length, 2, 'arr.length');
+assert(arr.hasOwnProperty("1"), 'arr.hasOwnProperty("1") !== true');
+assert.sameValue(arr[0], 0, 'arr[0]');
+assert.sameValue(arr[1], 2, 'arr[1]');
diff --git a/test/built-ins/Object/defineProperties/15.2.3.7-6-a-173.js b/test/built-ins/Object/defineProperties/15.2.3.7-6-a-173.js
index 84fba667a231d2f740abf4c290d07d2bf692789b..0664450db6c87d58667543b4f4ebda6aafc7988a 100644
--- a/test/built-ins/Object/defineProperties/15.2.3.7-6-a-173.js
+++ b/test/built-ins/Object/defineProperties/15.2.3.7-6-a-173.js
@@ -10,13 +10,11 @@ description: >
     own accessor property with large index named in 'O' that overrides
     inherited accessor property can stop deleting index named
     properties (15.4.5.1 step 3.l.ii)
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
-
         var arr = [0, 1];
-        try {
+
+assert.throws(TypeError, function() {
             Object.defineProperty(arr, "1", {
                 get: function () {
                     return 1;
@@ -36,12 +34,9 @@ function testcase() {
                     value: 1
                 }
             });
-            return false;
-        } catch (e) {
-            return e instanceof TypeError && arr.length === 2 && arr.hasOwnProperty("1") &&
-                arr[0] === 0 && arr[1] === 1 && Array.prototype[1] === 2;
-        } finally {
-            delete Array.prototype[1];
-        }
-    }
-runTestCase(testcase);
+});
+assert.sameValue(arr.length, 2, 'arr.length');
+assert(arr.hasOwnProperty("1"), 'arr.hasOwnProperty("1") !== true');
+assert.sameValue(arr[0], 0, 'arr[0]');
+assert.sameValue(arr[1], 1, 'arr[1]');
+assert.sameValue(Array.prototype[1], 2, 'Array.prototype[1]');
diff --git a/test/built-ins/Object/defineProperties/15.2.3.7-6-a-187.js b/test/built-ins/Object/defineProperties/15.2.3.7-6-a-187.js
index 565775b9a49906055fc7116073113c8672834e5d..239da3b32ad283406e09c18371661e50b9b0abae 100644
--- a/test/built-ins/Object/defineProperties/15.2.3.7-6-a-187.js
+++ b/test/built-ins/Object/defineProperties/15.2.3.7-6-a-187.js
@@ -6,11 +6,8 @@ es5id: 15.2.3.7-6-a-187
 description: >
     Object.defineProperties - 'O' is an Array, 'P' is an array index
     named property, 'P' is inherited data property  (15.4.5.1 step 4.c)
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
-        try {
             Object.defineProperty(Array.prototype, "0", {
                 value: 11,
                 configurable: true
@@ -23,9 +20,7 @@ function testcase() {
                     configurable: false
                 }
             });
-            return arr.hasOwnProperty("0") && typeof arr[0] === "undefined" && Array.prototype[0] === 11;
-        } finally {
-            delete Array.prototype[0];
-        }
-    }
-runTestCase(testcase);
+
+assert(arr.hasOwnProperty("0"), 'arr.hasOwnProperty("0") !== true');
+assert.sameValue(typeof arr[0], "undefined", 'typeof arr[0]');
+assert.sameValue(Array.prototype[0], 11, 'Array.prototype[0]');
diff --git a/test/built-ins/Object/defineProperties/15.2.3.7-6-a-188.js b/test/built-ins/Object/defineProperties/15.2.3.7-6-a-188.js
index 604d1271716857547418dc21acb57ff1c66adaf6..a5895c270a53f6e023179e97e73b207f8c10a724 100644
--- a/test/built-ins/Object/defineProperties/15.2.3.7-6-a-188.js
+++ b/test/built-ins/Object/defineProperties/15.2.3.7-6-a-188.js
@@ -7,17 +7,16 @@ description: >
     Object.defineProperties - 'O' is an Array, 'P' is an array index
     named property, 'P' is own data property that overrides an
     inherited data property  (15.4.5.1 step 4.c)
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
-        try {
+var arr = [];
+
+assert.throws(TypeError, function() {
             Object.defineProperty(Array.prototype, "0", {
                 value: 11,
                 configurable: true
             });
 
-            var arr = [];
             Object.defineProperty(arr, "0", {
                 value: 12,
                 configurable: false
@@ -28,11 +27,6 @@ function testcase() {
                     configurable: true
                 }
             });
-            return false;
-        } catch (e) {
-            return e instanceof TypeError && arr[0] === 12 && Array.prototype[0] === 11;
-        } finally {
-            delete Array.prototype[0];
-        }
-    }
-runTestCase(testcase);
+});
+assert.sameValue(arr[0], 12, 'arr[0]');
+assert.sameValue(Array.prototype[0], 11, 'Array.prototype[0]');
diff --git a/test/built-ins/Object/defineProperties/15.2.3.7-6-a-189.js b/test/built-ins/Object/defineProperties/15.2.3.7-6-a-189.js
index 4828ac6a6665a71ffb886c5f42e90b5f8f0570f6..43dcd499165e2c5a7fa72bbde1e92528f94d0d8f 100644
--- a/test/built-ins/Object/defineProperties/15.2.3.7-6-a-189.js
+++ b/test/built-ins/Object/defineProperties/15.2.3.7-6-a-189.js
@@ -7,11 +7,11 @@ description: >
     Object.defineProperties - 'O' is an Array, 'P' is an array index
     named property, 'P' is own data property that overrides an
     inherited accessor property  (15.4.5.1 step 4.c)
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
-        try {
+var arr = [];
+
+assert.throws(TypeError, function() {
             Object.defineProperty(Array.prototype, "0", {
                 get: function () {
                     return 11;
@@ -19,7 +19,6 @@ function testcase() {
                 configurable: true
             });
 
-            var arr = [];
             Object.defineProperty(arr, "0", {
                 value: 12,
                 configurable: false
@@ -30,11 +29,6 @@ function testcase() {
                     configurable: true
                 }
             });
-            return false;
-        } catch (e) {
-            return e instanceof TypeError && arr[0] === 12 && Array.prototype[0] === 11;
-        } finally {
-            delete Array.prototype[0];
-        }
-    }
-runTestCase(testcase);
+});
+assert.sameValue(arr[0], 12, 'arr[0]');
+assert.sameValue(Array.prototype[0], 11, 'Array.prototype[0]');
diff --git a/test/built-ins/Object/defineProperties/15.2.3.7-6-a-191.js b/test/built-ins/Object/defineProperties/15.2.3.7-6-a-191.js
index 7a43741be51c1aaee7de71f31d5b44a9b5a4fcbd..c074029e578a766c1ed162d03e89697d10e54991 100644
--- a/test/built-ins/Object/defineProperties/15.2.3.7-6-a-191.js
+++ b/test/built-ins/Object/defineProperties/15.2.3.7-6-a-191.js
@@ -6,11 +6,8 @@ es5id: 15.2.3.7-6-a-191
 description: >
     Object.defineProperties - 'O' is an Array, 'P' is an array index
     property, 'P' is inherited accessor property  (15.4.5.1 step 4.c)
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
-        try {
             Object.defineProperty(Array.prototype, "0", {
                 get: function () {
                     return 11;
@@ -28,9 +25,7 @@ function testcase() {
                     configurable: false
                 }
             });
-            return arr.hasOwnProperty("0") && arr[0] === 12 && Array.prototype[0] === 11;
-        } finally {
-            delete Array.prototype[0];
-        }
-    }
-runTestCase(testcase);
+
+assert(arr.hasOwnProperty("0"), 'arr.hasOwnProperty("0") !== true');
+assert.sameValue(arr[0], 12, 'arr[0]');
+assert.sameValue(Array.prototype[0], 11, 'Array.prototype[0]');
diff --git a/test/built-ins/Object/defineProperties/15.2.3.7-6-a-192.js b/test/built-ins/Object/defineProperties/15.2.3.7-6-a-192.js
index 38fdf62437fa89de2aaebb15904839e2b6bf76ec..5c064cd643c5c72230c5e68fb4aafcad834125e9 100644
--- a/test/built-ins/Object/defineProperties/15.2.3.7-6-a-192.js
+++ b/test/built-ins/Object/defineProperties/15.2.3.7-6-a-192.js
@@ -7,17 +7,16 @@ description: >
     Object.defineProperties - 'O' is an Array, 'P' is an array index
     named property, 'P' is own accessor property that overrides an
     inherited data property (15.4.5.1 step 4.c)
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
-        try {
+var arr = [];
+
+assert.throws(TypeError, function() {
             Object.defineProperty(Array.prototype, "0", {
                 value: 11,
                 configurable: true
             });
 
-            var arr = [];
             Object.defineProperty(arr, "0", {
                 get: function () {
                     return 12;
@@ -30,11 +29,6 @@ function testcase() {
                     configurable: true
                 }
             });
-            return false;
-        } catch (e) {
-            return e instanceof TypeError && arr[0] === 12 && Array.prototype[0] === 11;
-        } finally {
-            delete Array.prototype[0];
-        }
-    }
-runTestCase(testcase);
+});
+assert.sameValue(arr[0], 12, 'arr[0]');
+assert.sameValue(Array.prototype[0], 11, 'Array.prototype[0]');
diff --git a/test/built-ins/Object/defineProperties/15.2.3.7-6-a-193.js b/test/built-ins/Object/defineProperties/15.2.3.7-6-a-193.js
index ec969403847597ef4da4e950c974924e1d193412..1f6f9216124e4d84ad9ec185e530f51039de352d 100644
--- a/test/built-ins/Object/defineProperties/15.2.3.7-6-a-193.js
+++ b/test/built-ins/Object/defineProperties/15.2.3.7-6-a-193.js
@@ -7,11 +7,11 @@ description: >
     Object.defineProperties - 'O' is an Array, 'P' is an array index
     named property, 'P' is own accessor property that overrides an
     inherited accessor property  (15.4.5.1 step 4.c)
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
-        try {
+var arr = [];
+
+assert.throws(TypeError, function() {
             Object.defineProperty(Array.prototype, "0", {
                 get: function () {
                     return 11;
@@ -19,7 +19,6 @@ function testcase() {
                 configurable: true
             });
 
-            var arr = [];
             Object.defineProperty(arr, "0", {
                 get: function () {
                     return 12;
@@ -32,11 +31,6 @@ function testcase() {
                     configurable: true
                 }
             });
-            return false;
-        } catch (e) {
-            return e instanceof TypeError && arr[0] === 12 && Array.prototype[0] === 11;
-        } finally {
-            delete Array.prototype[0];
-        }
-    }
-runTestCase(testcase);
+});
+assert.sameValue(arr[0], 12, 'arr[0]');
+assert.sameValue(Array.prototype[0], 11, 'Array.prototype[0]');
diff --git a/test/built-ins/Object/defineProperties/15.2.3.7-6-a-20.js b/test/built-ins/Object/defineProperties/15.2.3.7-6-a-20.js
index 6cba1a9c3d471985cfb8d6da6141c84d5e5ea3ca..c6256b2e26355442ab41ec3cda8ae80428fc2c91 100644
--- a/test/built-ins/Object/defineProperties/15.2.3.7-6-a-20.js
+++ b/test/built-ins/Object/defineProperties/15.2.3.7-6-a-20.js
@@ -6,12 +6,8 @@ es5id: 15.2.3.7-6-a-20
 description: >
     Object.defineProperties - 'O' is a JSON object which implements
     its own [[GetOwnProperty]] method to get 'P' (8.12.9 step 1 )
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
-
-        try {
             Object.defineProperty(JSON, "prop", {
                 value: 11,
                 writable: true,
@@ -23,9 +19,6 @@ function testcase() {
                     value: 12
                 }
             });
-            return hasProperty && JSON.prop === 12;
-        } finally {
-            delete JSON.prop;
-        }
-    }
-runTestCase(testcase);
+
+assert(hasProperty, 'hasProperty !== true');
+assert.sameValue(JSON.prop, 12, 'JSON.prop');
diff --git a/test/built-ins/Object/defineProperty/15.2.3.6-3-139-1.js b/test/built-ins/Object/defineProperty/15.2.3.6-3-139-1.js
index 55e12b421a87c2310aac8c66628a4f957e517c5c..dc4bb72beb2426d378ddfcc11067b6c72c774ab6 100644
--- a/test/built-ins/Object/defineProperty/15.2.3.6-3-139-1.js
+++ b/test/built-ins/Object/defineProperty/15.2.3.6-3-139-1.js
@@ -7,12 +7,10 @@ description: >
     Object.defineProperty - 'Attributes' is a Function object which
     implements its own [[Get]] method to access the 'value' property
     of prototype object  (8.10.5 step 5.a)
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
         var obj = {};
-        try {
+
             Function.prototype.value = "Function";
             var funObj = function (a, b) {
                 return a + b;
@@ -20,9 +18,4 @@ function testcase() {
 
             Object.defineProperty(obj, "property", funObj);
 
-            return obj.property === "Function";
-        } finally {
-            delete Function.prototype.value;
-        }
-    }
-runTestCase(testcase);
+assert.sameValue(obj.property, "Function", 'obj.property');
diff --git a/test/built-ins/Object/defineProperty/15.2.3.6-3-140-1.js b/test/built-ins/Object/defineProperty/15.2.3.6-3-140-1.js
index 8ee35ecefaf61fbf2644bb7ec484cdae72119118..2427bce09bc8a1961502bf15a70a7940cecdd195 100644
--- a/test/built-ins/Object/defineProperty/15.2.3.6-3-140-1.js
+++ b/test/built-ins/Object/defineProperty/15.2.3.6-3-140-1.js
@@ -7,20 +7,13 @@ description: >
     Object.defineProperty - 'Attributes' is an Array object that uses
     Object's [[Get]] method to access the 'value' property of
     prototype object  (8.10.5 step 5.a)
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
         var obj = {};
-        try {
+
             Array.prototype.value = "Array";
             var arrObj = [1, 2, 3];
 
             Object.defineProperty(obj, "property", arrObj);
 
-            return obj.property === "Array";
-        } finally {
-            delete Array.prototype.value;
-        }
-    }
-runTestCase(testcase);
+assert.sameValue(obj.property, "Array", 'obj.property');
diff --git a/test/built-ins/Object/defineProperty/15.2.3.6-3-141-1.js b/test/built-ins/Object/defineProperty/15.2.3.6-3-141-1.js
index 0f304449242b8f477ac4fffc07ebd7ebe719aade..7168b9b07cf739ded84d0924db830b95f0765f51 100644
--- a/test/built-ins/Object/defineProperty/15.2.3.6-3-141-1.js
+++ b/test/built-ins/Object/defineProperty/15.2.3.6-3-141-1.js
@@ -7,20 +7,13 @@ description: >
     Object.defineProperty - 'Attributes' is a String object that uses
     Object's [[Get]] method to access the 'value' property of
     prototype object  (8.10.5 step 5.a)
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
         var obj = {};
-        try {
+
             String.prototype.value = "String";
             var strObj = new String("abc");
 
             Object.defineProperty(obj, "property", strObj);
 
-            return obj.property === "String";
-        } finally {
-            delete String.prototype.value;
-        }
-    }
-runTestCase(testcase);
+assert.sameValue(obj.property, "String", 'obj.property');
diff --git a/test/built-ins/Object/defineProperty/15.2.3.6-3-142-1.js b/test/built-ins/Object/defineProperty/15.2.3.6-3-142-1.js
index c5f7def07542a59012ce18515ff2d5ebbf90854f..b7c70877df66dd8a1514ef11af854f44bd35d58f 100644
--- a/test/built-ins/Object/defineProperty/15.2.3.6-3-142-1.js
+++ b/test/built-ins/Object/defineProperty/15.2.3.6-3-142-1.js
@@ -7,20 +7,13 @@ description: >
     Object.defineProperty - 'Attributes' is a Boolean object that uses
     Object's [[Get]] method to access the 'value' property of
     prototype object  (8.10.5 step 5.a)
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
         var obj = {};
-        try {
+
             Boolean.prototype.value = "Boolean";
             var boolObj = new Boolean(true);
 
             Object.defineProperty(obj, "property", boolObj);
 
-            return obj.property === "Boolean";
-        } finally {
-            delete Boolean.prototype.value;
-        }
-    }
-runTestCase(testcase);
+assert.sameValue(obj.property, "Boolean", 'obj.property');
diff --git a/test/built-ins/Object/defineProperty/15.2.3.6-3-143-1.js b/test/built-ins/Object/defineProperty/15.2.3.6-3-143-1.js
index 0e69a8849253cc0cf8f7d2f64d96d50a09a6b08f..855177b2c9820d582f55f24240b96e5dd5077a2b 100644
--- a/test/built-ins/Object/defineProperty/15.2.3.6-3-143-1.js
+++ b/test/built-ins/Object/defineProperty/15.2.3.6-3-143-1.js
@@ -7,20 +7,13 @@ description: >
     Object.defineProperty - 'Attributes' is a Number object that uses
     Object's [[Get]] method to access the 'value' property of
     prototype object  (8.10.5 step 5.a)
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
         var obj = {};
-        try {
+
             Number.prototype.value = "Number";
             var numObj = new Number(-2);
 
             Object.defineProperty(obj, "property", numObj);
 
-            return obj.property === "Number";
-        } finally {
-            delete Number.prototype.value;
-        }
-    }
-runTestCase(testcase);
+assert.sameValue(obj.property, "Number", 'obj.property');
diff --git a/test/built-ins/Object/defineProperty/15.2.3.6-3-144-1.js b/test/built-ins/Object/defineProperty/15.2.3.6-3-144-1.js
index 96bf1f211c3ae62269b2d2f5f97beea8b9cc5cbe..2d38e639f98c70922b62d3fcad8a79a7130686b8 100644
--- a/test/built-ins/Object/defineProperty/15.2.3.6-3-144-1.js
+++ b/test/built-ins/Object/defineProperty/15.2.3.6-3-144-1.js
@@ -7,20 +7,12 @@ description: >
     Object.defineProperty - 'Attributes' is the Math object that uses
     Object's [[Get]] method to access the 'value' property of
     prototype object  (8.10.5 step 5.a)
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
         var obj = {};
 
-        try {
             Object.prototype.value = "Math";
 
             Object.defineProperty(obj, "property", Math);
 
-            return obj.property === "Math";
-        } finally {
-            delete Object.prototype.value;
-        }
-    }
-runTestCase(testcase);
+assert.sameValue(obj.property, "Math", 'obj.property');
diff --git a/test/built-ins/Object/defineProperty/15.2.3.6-3-144.js b/test/built-ins/Object/defineProperty/15.2.3.6-3-144.js
index 458e7457f38c751d1ad38bedba3861383838cac3..5a243de1cace221844fa244cd150fcb598d52963 100644
--- a/test/built-ins/Object/defineProperty/15.2.3.6-3-144.js
+++ b/test/built-ins/Object/defineProperty/15.2.3.6-3-144.js
@@ -7,20 +7,12 @@ description: >
     Object.defineProperty - 'Attributes' is the Math object that uses
     Object's [[Get]] method to access the 'value' property  (8.10.5
     step 5.a)
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
         var obj = {};
 
-        try {
             Math.value = "Math";
 
             Object.defineProperty(obj, "property", Math);
 
-            return obj.property === "Math";
-        } finally {
-            delete Math.value;
-        }
-    }
-runTestCase(testcase);
+assert.sameValue(obj.property, "Math", 'obj.property');
diff --git a/test/built-ins/Object/defineProperty/15.2.3.6-3-145-1.js b/test/built-ins/Object/defineProperty/15.2.3.6-3-145-1.js
index 7c09699cf65dde1e0d5ea1638268b2a7df9c4d54..738ae2d0e7483faa38af3b613f0befc4112027cd 100644
--- a/test/built-ins/Object/defineProperty/15.2.3.6-3-145-1.js
+++ b/test/built-ins/Object/defineProperty/15.2.3.6-3-145-1.js
@@ -7,20 +7,13 @@ description: >
     Object.defineProperty - 'Attributes' is a Date object that uses
     Object's [[Get]] method to access the 'value' property of
     prototype object  (8.10.5 step 5.a)
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
         var obj = {};
-        try {
+
             Date.prototype.value = "Date";
             var dateObj = new Date();
 
             Object.defineProperty(obj, "property", dateObj);
 
-            return obj.property === "Date";
-        } finally {
-            delete Date.prototype.value;
-        }
-    }
-runTestCase(testcase);
+assert.sameValue(obj.property, "Date", 'obj.property');
diff --git a/test/built-ins/Object/defineProperty/15.2.3.6-3-146-1.js b/test/built-ins/Object/defineProperty/15.2.3.6-3-146-1.js
index 4f34ea230806361862b39deb55636cc29e0ac6c6..28fd27b9d358ac4f6b2cd1a8286fbed148584bdf 100644
--- a/test/built-ins/Object/defineProperty/15.2.3.6-3-146-1.js
+++ b/test/built-ins/Object/defineProperty/15.2.3.6-3-146-1.js
@@ -7,20 +7,13 @@ description: >
     Object.defineProperty - 'Attributes' is a RegExp object that uses
     Object's [[Get]] method to access the 'value' property of
     prototype object  (8.10.5 step 5.a)
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
         var obj = {};
-        try {
+
             RegExp.prototype.value = "RegExp";
             var regObj = new RegExp();
 
             Object.defineProperty(obj, "property", regObj);
 
-            return obj.property === "RegExp";
-        } finally {
-            delete RegExp.prototype.value;
-        }
-    }
-runTestCase(testcase);
+assert.sameValue(obj.property, "RegExp", 'obj.property');
diff --git a/test/built-ins/Object/defineProperty/15.2.3.6-3-147-1.js b/test/built-ins/Object/defineProperty/15.2.3.6-3-147-1.js
index e0809ac44ad7d4170095f329dcfe15075dfbfd2d..2a28c6b511a4665b91f744e9df644b76e7b5cf47 100644
--- a/test/built-ins/Object/defineProperty/15.2.3.6-3-147-1.js
+++ b/test/built-ins/Object/defineProperty/15.2.3.6-3-147-1.js
@@ -7,20 +7,12 @@ description: >
     Object.defineProperty - 'Attributes' is the JSON object that uses
     Object's [[Get]] method to access the 'value' property of
     prototype object  (8.10.5 step 5.a)
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
         var obj = {};
 
-        try {
             Object.prototype.value = "JSON";
 
             Object.defineProperty(obj, "property", JSON);
 
-            return obj.property === "JSON";
-        } finally {
-            delete Object.prototype.value;
-        }
-    }
-runTestCase(testcase);
+assert.sameValue(obj.property, "JSON", 'obj.property');
diff --git a/test/built-ins/Object/defineProperty/15.2.3.6-3-147.js b/test/built-ins/Object/defineProperty/15.2.3.6-3-147.js
index 89985336ffd56df92554be0eb613f7eda2ed8fc4..5974a207bbb87078233f45b76984e2cb31019b90 100644
--- a/test/built-ins/Object/defineProperty/15.2.3.6-3-147.js
+++ b/test/built-ins/Object/defineProperty/15.2.3.6-3-147.js
@@ -7,20 +7,12 @@ description: >
     Object.defineProperty - 'Attributes' is the JSON object that uses
     Object's [[Get]] method to access the 'value' property  (8.10.5
     step 5.a)
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
         var obj = {};
 
-        try {
             JSON.value = "JSON";
 
             Object.defineProperty(obj, "property", JSON);
 
-            return obj.property === "JSON";
-        } finally {
-            delete JSON.value;
-        }
-    }
-runTestCase(testcase);
+assert.sameValue(obj.property, "JSON", 'obj.property');
diff --git a/test/built-ins/Object/defineProperty/15.2.3.6-3-148-1.js b/test/built-ins/Object/defineProperty/15.2.3.6-3-148-1.js
index b891ea14369b43150cb6db248b1ec62f4bca929d..516717351ec53f464307e5f164dd201a4af080bb 100644
--- a/test/built-ins/Object/defineProperty/15.2.3.6-3-148-1.js
+++ b/test/built-ins/Object/defineProperty/15.2.3.6-3-148-1.js
@@ -7,20 +7,13 @@ description: >
     Object.defineProperty - 'Attributes' is an Error object that uses
     Object's [[Get]] method to access the 'value' property of
     prototype object  (8.10.5 step 5.a)
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
         var obj = {};
-        try {
+
             Error.prototype.value = "Error";
             var errObj = new Error();
 
             Object.defineProperty(obj, "property", errObj);
 
-            return obj.property === "Error";
-        } finally {
-            delete Error.prototype.value;
-        }
-    }
-runTestCase(testcase);
+assert.sameValue(obj.property, "Error", 'obj.property');
diff --git a/test/built-ins/Object/defineProperty/15.2.3.6-3-149-1.js b/test/built-ins/Object/defineProperty/15.2.3.6-3-149-1.js
index 94bae256383dfb6aa1f910276538c28e0c30f3af..7ce7e83e2241dcb629a450e2178db5523a3530c4 100644
--- a/test/built-ins/Object/defineProperty/15.2.3.6-3-149-1.js
+++ b/test/built-ins/Object/defineProperty/15.2.3.6-3-149-1.js
@@ -7,21 +7,14 @@ description: >
     Object.defineProperty - 'Attributes' is an Arguments object which
     implements its own [[Get]] method to access the 'value' property
     of prototype object (8.10.5 step 5.a)
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
         var obj = {};
-        try {
+
             Object.prototype.value = "arguments";
             var argObj = (function () { return arguments; })();
 
 
             Object.defineProperty(obj, "property", argObj);
 
-            return obj.property === "arguments";
-        } finally {
-            delete Object.prototype.value;
-        }
-    }
-runTestCase(testcase);
+assert.sameValue(obj.property, "arguments", 'obj.property');
diff --git a/test/built-ins/Object/defineProperty/15.2.3.6-3-151.js b/test/built-ins/Object/defineProperty/15.2.3.6-3-151.js
index ea7a65b543a6117509f1a27970c844d2bf56ce95..13f2ce89dbcbd5d90a6efb086faed0103d33e803 100644
--- a/test/built-ins/Object/defineProperty/15.2.3.6-3-151.js
+++ b/test/built-ins/Object/defineProperty/15.2.3.6-3-151.js
@@ -7,22 +7,13 @@ description: >
     Object.defineProperty - 'Attributes' is the global object that
     uses Object's [[Get]] method to access the 'value' property
     (8.10.5 step 5.a)
-includes:
-    - runTestCase.js
-    - fnGlobalObject.js
+includes: [fnGlobalObject.js]
 ---*/
 
-function testcase() {
         var obj = {};
 
-        try {
             fnGlobalObject().value = "global";
 
             Object.defineProperty(obj, "property", fnGlobalObject());
 
-            return obj.property === "global";
-        } finally {
-            delete fnGlobalObject().value;
-        }
-    }
-runTestCase(testcase);
+assert.sameValue(obj.property, "global", 'obj.property');
diff --git a/test/built-ins/Object/defineProperty/15.2.3.6-3-165-1.js b/test/built-ins/Object/defineProperty/15.2.3.6-3-165-1.js
index 9ca90dfff746f0446233b786db8e89d900953e26..2daa9523df5a78a1e9b19edf1a8adbda2207f725 100644
--- a/test/built-ins/Object/defineProperty/15.2.3.6-3-165-1.js
+++ b/test/built-ins/Object/defineProperty/15.2.3.6-3-165-1.js
@@ -7,13 +7,10 @@ description: >
     Object.defineProperty - 'Attributes' is a Function object which
     implements its own [[Get]] method to access the 'writable'
     property of prototype object (8.10.5 step 6.b)
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
         var obj = {};
 
-        try {
             Function.prototype.writable = true;
             var funObj = function (a, b) {
                 return a + b;
@@ -27,9 +24,5 @@ function testcase() {
 
             var afterWrite = (obj.property === "isWritable");
 
-            return beforeWrite === true && afterWrite === true;
-        } finally {
-            delete Function.prototype.writable;
-        }
-    }
-runTestCase(testcase);
+assert.sameValue(beforeWrite, true, 'beforeWrite');
+assert.sameValue(afterWrite, true, 'afterWrite');
diff --git a/test/built-ins/Object/defineProperty/15.2.3.6-3-166-1.js b/test/built-ins/Object/defineProperty/15.2.3.6-3-166-1.js
index 6dc54828a57b94f415ed575a6a2d58f7f455e5a7..66bc45603a2b03a7d6fb7238f47468a956eb93ca 100644
--- a/test/built-ins/Object/defineProperty/15.2.3.6-3-166-1.js
+++ b/test/built-ins/Object/defineProperty/15.2.3.6-3-166-1.js
@@ -7,12 +7,10 @@ description: >
     Object.defineProperty - 'Attributes' is an Array object that uses
     Object's [[Get]] method to access the 'writable' property of
     prototype object (8.10.5 step 6.b)
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
         var obj = {};
-        try {
+
             Array.prototype.writable = true;
             var arrObj = [1, 2, 3];
 
@@ -24,9 +22,5 @@ function testcase() {
 
             var afterWrite = (obj.property === "isWritable");
 
-            return beforeWrite === true && afterWrite === true;
-        } finally {
-            delete Array.prototype.writable;
-        }
-    }
-runTestCase(testcase);
+assert.sameValue(beforeWrite, true, 'beforeWrite');
+assert.sameValue(afterWrite, true, 'afterWrite');
diff --git a/test/built-ins/Object/defineProperty/15.2.3.6-3-167-1.js b/test/built-ins/Object/defineProperty/15.2.3.6-3-167-1.js
index 5c2aff8b25e31d33fd6febe934bbd7982bd2cfe7..e5227ee79ea717e985689ae49016324ccaf9a9f0 100644
--- a/test/built-ins/Object/defineProperty/15.2.3.6-3-167-1.js
+++ b/test/built-ins/Object/defineProperty/15.2.3.6-3-167-1.js
@@ -7,12 +7,10 @@ description: >
     Object.defineProperty - 'Attributes' is a String object that uses
     Object's [[Get]] method to access the 'writable' property of
     prototype object (8.10.5 step 6.b)
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
         var obj = {};
-        try {
+
             String.prototype.writable = true;
             var strObj = new String("abc");
 
@@ -24,9 +22,5 @@ function testcase() {
 
             var afterWrite = (obj.property === "isWritable");
 
-            return beforeWrite === true && afterWrite === true;
-        } finally {
-            delete String.prototype.writable;
-        }
-    }
-runTestCase(testcase);
+assert.sameValue(beforeWrite, true, 'beforeWrite');
+assert.sameValue(afterWrite, true, 'afterWrite');
diff --git a/test/built-ins/Object/defineProperty/15.2.3.6-3-168-1.js b/test/built-ins/Object/defineProperty/15.2.3.6-3-168-1.js
index 5870b54ae8d4861347d3303bdd281612fd4cd441..347024234d63042b2975d408d9fb2453dc094dd1 100644
--- a/test/built-ins/Object/defineProperty/15.2.3.6-3-168-1.js
+++ b/test/built-ins/Object/defineProperty/15.2.3.6-3-168-1.js
@@ -7,12 +7,10 @@ description: >
     Object.defineProperty - 'Attributes' is a Boolean object that uses
     Object's [[Get]] method to access the 'writable' property of
     prototype object (8.10.5 step 6.b)
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
         var obj = {};
-        try {
+
             Boolean.prototype.writable = true;
             var boolObj = new Boolean(true);
 
@@ -24,9 +22,5 @@ function testcase() {
 
             var afterWrite = (obj.property === "isWritable");
 
-            return beforeWrite === true && afterWrite === true;
-        } finally {
-            delete Boolean.prototype.writable;
-        }
-    }
-runTestCase(testcase);
+assert.sameValue(beforeWrite, true, 'beforeWrite');
+assert.sameValue(afterWrite, true, 'afterWrite');
diff --git a/test/built-ins/Object/defineProperty/15.2.3.6-3-169-1.js b/test/built-ins/Object/defineProperty/15.2.3.6-3-169-1.js
index b4a10345af0c56f139efe837e162920b35af47b1..431adb9f6af21f050fb66e51930b57cf92741acc 100644
--- a/test/built-ins/Object/defineProperty/15.2.3.6-3-169-1.js
+++ b/test/built-ins/Object/defineProperty/15.2.3.6-3-169-1.js
@@ -7,12 +7,10 @@ description: >
     Object.defineProperty - 'Attributes' is a Number object that uses
     Object's [[Get]] method to access the 'writable' property of
     prototype object (8.10.5 step 6.b)
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
         var obj = {};
-        try {
+
             Number.prototype.writable = true;
             var numObj = new Number(-2);
 
@@ -24,9 +22,5 @@ function testcase() {
 
             var afterWrite = (obj.property === "isWritable");
 
-            return beforeWrite === true && afterWrite === true;
-        } finally {
-            delete Number.prototype.writable;
-        }
-    }
-runTestCase(testcase);
+assert.sameValue(beforeWrite, true, 'beforeWrite');
+assert.sameValue(afterWrite, true, 'afterWrite');
diff --git a/test/built-ins/Object/defineProperty/15.2.3.6-3-170-1.js b/test/built-ins/Object/defineProperty/15.2.3.6-3-170-1.js
index 0ac85bc9056ac83fc3b26baa3d30e08184354cd4..bd586b4b119c6450353c14a824c357da334e9613 100644
--- a/test/built-ins/Object/defineProperty/15.2.3.6-3-170-1.js
+++ b/test/built-ins/Object/defineProperty/15.2.3.6-3-170-1.js
@@ -7,13 +7,10 @@ description: >
     Object.defineProperty - 'Attributes' is the Math object that uses
     Object's [[Get]] method to access the 'writable' property of
     prototype object (8.10.5 step 6.b)
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
         var obj = {};
 
-        try {
             Object.prototype.writable = true;
 
             Object.defineProperty(obj, "property", Math);
@@ -24,9 +21,5 @@ function testcase() {
 
             var afterWrite = (obj.property === "isWritable");
 
-            return beforeWrite === true && afterWrite === true;
-        } finally {
-            delete Object.prototype.writable;
-        }
-    }
-runTestCase(testcase);
+assert.sameValue(beforeWrite, true, 'beforeWrite');
+assert.sameValue(afterWrite, true, 'afterWrite');
diff --git a/test/built-ins/Object/defineProperty/15.2.3.6-3-170.js b/test/built-ins/Object/defineProperty/15.2.3.6-3-170.js
index 38bdebca8e98eb89282a099d44662365dcc10fae..d0d86774fe291de79817ffa8e2219337f04c8afb 100644
--- a/test/built-ins/Object/defineProperty/15.2.3.6-3-170.js
+++ b/test/built-ins/Object/defineProperty/15.2.3.6-3-170.js
@@ -7,13 +7,10 @@ description: >
     Object.defineProperty - 'Attributes' is the Math object that uses
     Object's [[Get]] method to access the 'writable' property  (8.10.5
     step 6.a)
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
         var obj = {};
 
-        try {
             Math.writable = true;
 
             Object.defineProperty(obj, "property", Math);
@@ -24,9 +21,5 @@ function testcase() {
 
             var afterWrite = (obj.property === "isWritable");
 
-            return beforeWrite === true && afterWrite === true;
-        } finally {
-            delete Math.writable;
-        }
-    }
-runTestCase(testcase);
+assert.sameValue(beforeWrite, true, 'beforeWrite');
+assert.sameValue(afterWrite, true, 'afterWrite');
diff --git a/test/built-ins/Object/defineProperty/15.2.3.6-3-172-1.js b/test/built-ins/Object/defineProperty/15.2.3.6-3-172-1.js
index 444791cf8e1105e1bfb3f0e7a071c66387a964da..abcd93fc043ec9c8e472c3b2045e6c550c03ba1c 100644
--- a/test/built-ins/Object/defineProperty/15.2.3.6-3-172-1.js
+++ b/test/built-ins/Object/defineProperty/15.2.3.6-3-172-1.js
@@ -7,12 +7,10 @@ description: >
     Object.defineProperty - 'Attributes' is a RegExp object that uses
     Object's [[Get]] method to access the 'writable' property of
     prototype object (8.10.5 step 6.b)
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
         var obj = {};
-        try {
+
             RegExp.prototype.writable = true;
 
             var regObj = new RegExp();
@@ -25,9 +23,5 @@ function testcase() {
 
             var afterWrite = (obj.property === "isWritable");
 
-            return beforeWrite === true && afterWrite === true;
-        } finally {
-            delete RegExp.prototype.writable;
-        }
-    }
-runTestCase(testcase);
+assert.sameValue(beforeWrite, true, 'beforeWrite');
+assert.sameValue(afterWrite, true, 'afterWrite');
diff --git a/test/built-ins/Object/defineProperty/15.2.3.6-3-173-1.js b/test/built-ins/Object/defineProperty/15.2.3.6-3-173-1.js
index 170c0bed6253363468c244e41d068fa68ae37a64..78f95f7d2db992857b84e1c5cdfda786b1400925 100644
--- a/test/built-ins/Object/defineProperty/15.2.3.6-3-173-1.js
+++ b/test/built-ins/Object/defineProperty/15.2.3.6-3-173-1.js
@@ -7,13 +7,10 @@ description: >
     Object.defineProperty - 'Attributes' is the JSON object that uses
     Object's [[Get]] method to access the 'writable' property of
     prototype object (8.10.5 step 6.b)
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
         var obj = {};
 
-        try {
             Object.prototype.writable = true;
 
             Object.defineProperty(obj, "property", JSON);
@@ -24,9 +21,5 @@ function testcase() {
 
             var afterWrite = (obj.property === "isWritable");
 
-            return beforeWrite === true && afterWrite === true;
-        } finally {
-            delete Object.prototype.writable;
-        }
-    }
-runTestCase(testcase);
+assert.sameValue(beforeWrite, true, 'beforeWrite');
+assert.sameValue(afterWrite, true, 'afterWrite');
diff --git a/test/built-ins/Object/defineProperty/15.2.3.6-3-173.js b/test/built-ins/Object/defineProperty/15.2.3.6-3-173.js
index b488a826217843c63a826c11a21254163aaa6ea0..cb368f7d0331ca082f1d2ce1cb1a23f7e970aeee 100644
--- a/test/built-ins/Object/defineProperty/15.2.3.6-3-173.js
+++ b/test/built-ins/Object/defineProperty/15.2.3.6-3-173.js
@@ -7,13 +7,10 @@ description: >
     Object.defineProperty - 'Attributes' is the JSON object that uses
     Object's [[Get]] method to access the 'writable' property  (8.10.5
     step 6.a)
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
         var obj = {};
 
-        try {
             JSON.writable = true;
 
             Object.defineProperty(obj, "property", JSON);
@@ -24,9 +21,5 @@ function testcase() {
 
             var afterWrite = (obj.property === "isWritable");
 
-            return beforeWrite === true && afterWrite === true;
-        } finally {
-            delete JSON.writable;
-        }
-    }
-runTestCase(testcase);
+assert.sameValue(beforeWrite, true, 'beforeWrite');
+assert.sameValue(afterWrite, true, 'afterWrite');
diff --git a/test/built-ins/Object/defineProperty/15.2.3.6-3-174-1.js b/test/built-ins/Object/defineProperty/15.2.3.6-3-174-1.js
index b17e2fcbdf5b28f1b09a185ad68c806a35a56c60..073df798723833f8b7f515159a5958340504c2b9 100644
--- a/test/built-ins/Object/defineProperty/15.2.3.6-3-174-1.js
+++ b/test/built-ins/Object/defineProperty/15.2.3.6-3-174-1.js
@@ -7,12 +7,10 @@ description: >
     Object.defineProperty - 'Attributes' is an Error object that uses
     Object's [[Get]] method to access the 'writable' property of
     prototype object (8.10.5 step 6.b)
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
         var obj = {};
-        try {
+
             Error.prototype.writable = true;
 
             var errObj = new Error();
@@ -25,9 +23,5 @@ function testcase() {
 
             var afterWrite = (obj.property === "isWritable");
 
-            return beforeWrite === true && afterWrite === true;
-        } finally {
-            delete Error.prototype.writable;
-        }
-    }
-runTestCase(testcase);
+assert.sameValue(beforeWrite, true, 'beforeWrite');
+assert.sameValue(afterWrite, true, 'afterWrite');
diff --git a/test/built-ins/Object/defineProperty/15.2.3.6-3-175-1.js b/test/built-ins/Object/defineProperty/15.2.3.6-3-175-1.js
index 7a75d3321fc0c00eba789ff231183f96dc487ecb..cc32ea6b421b78f27f5916b6d36992574fafcd6c 100644
--- a/test/built-ins/Object/defineProperty/15.2.3.6-3-175-1.js
+++ b/test/built-ins/Object/defineProperty/15.2.3.6-3-175-1.js
@@ -7,12 +7,10 @@ description: >
     Object.defineProperty - 'Attributes' is an Arguments object which
     implements its own [[Get]] method to access the 'writable'
     property of prototype object (8.10.5 step 6.b)
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
         var obj = {};
-        try {
+
             Object.prototype.writable = true;
 
             var argObj = (function () { return arguments; })();
@@ -25,9 +23,5 @@ function testcase() {
 
             var afterWrite = (obj.property === "isWritable");
 
-            return beforeWrite === true && afterWrite === true;
-        } finally {
-            delete Object.prototype.writable;
-        }
-    }
-runTestCase(testcase);
+assert.sameValue(beforeWrite, true, 'beforeWrite');
+assert.sameValue(afterWrite, true, 'afterWrite');
diff --git a/test/built-ins/Object/defineProperty/15.2.3.6-3-177.js b/test/built-ins/Object/defineProperty/15.2.3.6-3-177.js
index 2452d47fcf4f83edc6b73739238c253e431fe8a4..dc5a0e6dd352f4e08c3658ae556ac1047d1131fc 100644
--- a/test/built-ins/Object/defineProperty/15.2.3.6-3-177.js
+++ b/test/built-ins/Object/defineProperty/15.2.3.6-3-177.js
@@ -7,15 +7,11 @@ description: >
     Object.defineProperty - 'Attributes' is the global object that
     uses Object's [[Get]] method to access the 'writable' property
     (8.10.5 step 6.a)
-includes:
-    - runTestCase.js
-    - fnGlobalObject.js
+includes: [fnGlobalObject.js]
 ---*/
 
-function testcase() {
         var obj = {};
 
-        try {
             fnGlobalObject().writable = true;
 
             Object.defineProperty(obj, "property", fnGlobalObject());
@@ -26,9 +22,5 @@ function testcase() {
 
             var afterWrite = (obj.property === "isWritable");
 
-            return beforeWrite === true && afterWrite === true;
-        } finally {
-            delete fnGlobalObject().writable;
-        }
-    }
-runTestCase(testcase);
+assert.sameValue(beforeWrite, true, 'beforeWrite');
+assert.sameValue(afterWrite, true, 'afterWrite');
diff --git a/test/built-ins/Object/defineProperty/15.2.3.6-3-218-1.js b/test/built-ins/Object/defineProperty/15.2.3.6-3-218-1.js
index 7fd8a49ab5980c2b9e34b151bab82dcf4fba3729..af3ba07d2874ca18ba74c470e7a0b97f4ce155ab 100644
--- a/test/built-ins/Object/defineProperty/15.2.3.6-3-218-1.js
+++ b/test/built-ins/Object/defineProperty/15.2.3.6-3-218-1.js
@@ -7,12 +7,10 @@ description: >
     Object.defineProperty - 'Attributes' is a Function object which
     implements its own [[Get]] method to access the 'get' property of
     prototype object (8.10.5 step 7.a)
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
         var obj = {};
-        try {
+
             Function.prototype.get = function () {
                 return "functionGetProperty";
             };
@@ -20,9 +18,4 @@ function testcase() {
 
             Object.defineProperty(obj, "property", funObj);
 
-            return obj.property === "functionGetProperty";
-        } finally {
-            delete Function.prototype.get;
-        }
-    }
-runTestCase(testcase);
+assert.sameValue(obj.property, "functionGetProperty", 'obj.property');
diff --git a/test/built-ins/Object/defineProperty/15.2.3.6-3-219-1.js b/test/built-ins/Object/defineProperty/15.2.3.6-3-219-1.js
index 33c27f2631d74454dea4a2e24bdc09da68a40308..777e4b1e16eaa253baf37f9fae6265f79ecedf9d 100644
--- a/test/built-ins/Object/defineProperty/15.2.3.6-3-219-1.js
+++ b/test/built-ins/Object/defineProperty/15.2.3.6-3-219-1.js
@@ -7,12 +7,10 @@ description: >
     Object.defineProperty - 'Attributes' is an Array object that uses
     Object's [[Get]] method to access the 'get' property of prototype
     object (8.10.5 step 7.a)
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
         var obj = {};
-        try {
+
             Array.prototype.get = function () {
                 return "arrayGetProperty";
             };
@@ -20,9 +18,4 @@ function testcase() {
 
             Object.defineProperty(obj, "property", arrObj);
 
-            return obj.property === "arrayGetProperty";
-        } finally {
-            delete Array.prototype.get;
-        }
-    }
-runTestCase(testcase);
+assert.sameValue(obj.property, "arrayGetProperty", 'obj.property');
diff --git a/test/built-ins/Object/defineProperty/15.2.3.6-3-220-1.js b/test/built-ins/Object/defineProperty/15.2.3.6-3-220-1.js
index af410bfe68f2db8a5693ece9ec7569e1c7483e3d..12816889ee97929c52ccecd8867493590a244a8b 100644
--- a/test/built-ins/Object/defineProperty/15.2.3.6-3-220-1.js
+++ b/test/built-ins/Object/defineProperty/15.2.3.6-3-220-1.js
@@ -7,12 +7,10 @@ description: >
     Object.defineProperty - 'Attributes' is a String object that uses
     Object's [[Get]] method to access the 'get' property of prototype
     object (8.10.5 step 7.a)
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
         var obj = {};
-        try {
+
             String.prototype.get = function () {
                 return "stringGetProperty";
             };
@@ -20,9 +18,4 @@ function testcase() {
 
             Object.defineProperty(obj, "property", strObj);
 
-            return obj.property === "stringGetProperty";
-        } finally {
-            delete String.prototype.get;
-        }
-    }
-runTestCase(testcase);
+assert.sameValue(obj.property, "stringGetProperty", 'obj.property');
diff --git a/test/built-ins/Object/defineProperty/15.2.3.6-3-221-1.js b/test/built-ins/Object/defineProperty/15.2.3.6-3-221-1.js
index 0d1f6512705abde534cbe2e2966bff87c202d788..5984602a4eee1a1daeb811dbef8bb2789a164670 100644
--- a/test/built-ins/Object/defineProperty/15.2.3.6-3-221-1.js
+++ b/test/built-ins/Object/defineProperty/15.2.3.6-3-221-1.js
@@ -7,12 +7,10 @@ description: >
     Object.defineProperty - 'Attributes' is a Boolean object that uses
     Object's [[Get]] method to access the 'get' property of prototype
     object (8.10.5 step 7.a)
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
         var obj = {};
-        try {
+
             Boolean.prototype.get = function () {
                 return "booleanGetProperty";
             };
@@ -20,9 +18,4 @@ function testcase() {
 
             Object.defineProperty(obj, "property", boolObj);
 
-            return obj.property === "booleanGetProperty";
-        } finally {
-            delete Boolean.prototype.get;
-        }
-    }
-runTestCase(testcase);
+assert.sameValue(obj.property, "booleanGetProperty", 'obj.property');
diff --git a/test/built-ins/Object/defineProperty/15.2.3.6-3-222-1.js b/test/built-ins/Object/defineProperty/15.2.3.6-3-222-1.js
index 73dd3b73f34efc7ff83b7fa17ee67bc2e4703521..2782d5443846e20200d2e836a385270d2edac40a 100644
--- a/test/built-ins/Object/defineProperty/15.2.3.6-3-222-1.js
+++ b/test/built-ins/Object/defineProperty/15.2.3.6-3-222-1.js
@@ -7,12 +7,10 @@ description: >
     Object.defineProperty - 'Attributes' is a Number object that uses
     Object's [[Get]] method to access the 'get' property of prototype
     object (8.10.5 step 7.a)
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
         var obj = {};
-        try {
+
             Number.prototype.get = function () {
                 return "numberGetProperty";
             };
@@ -20,9 +18,4 @@ function testcase() {
 
             Object.defineProperty(obj, "property", numObj);
 
-            return obj.property === "numberGetProperty";
-        } finally {
-            delete Number.prototype.get;
-        }
-    }
-runTestCase(testcase);
+assert.sameValue(obj.property, "numberGetProperty", 'obj.property');
diff --git a/test/built-ins/Object/defineProperty/15.2.3.6-3-223-1.js b/test/built-ins/Object/defineProperty/15.2.3.6-3-223-1.js
index 4b2dc0f76e7d22bb15d1b1933872b388600b02da..cb7c01393bfc14d39a46905c61456942935cbf63 100644
--- a/test/built-ins/Object/defineProperty/15.2.3.6-3-223-1.js
+++ b/test/built-ins/Object/defineProperty/15.2.3.6-3-223-1.js
@@ -7,22 +7,14 @@ description: >
     Object.defineProperty - 'Attributes' is the Math object that uses
     Object's [[Get]] method to access the 'get' property of prototype
     object (8.10.5 step 7.a)
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
         var obj = {};
 
-        try {
             Object.prototype.get = function () {
                 return "mathGetProperty";
             };
 
             Object.defineProperty(obj, "property", Math);
 
-            return obj.property === "mathGetProperty";
-        } finally {
-            delete Object.prototype.get;
-        }
-    }
-runTestCase(testcase);
+assert.sameValue(obj.property, "mathGetProperty", 'obj.property');
diff --git a/test/built-ins/Object/defineProperty/15.2.3.6-3-223.js b/test/built-ins/Object/defineProperty/15.2.3.6-3-223.js
index 2db97c35f659a4a8f370faf13f8ffc605852c52d..165f297a7f9bae743294b9e75a9aef6b8bbfef97 100644
--- a/test/built-ins/Object/defineProperty/15.2.3.6-3-223.js
+++ b/test/built-ins/Object/defineProperty/15.2.3.6-3-223.js
@@ -7,22 +7,14 @@ description: >
     Object.defineProperty - 'Attributes' is the Math object that uses
     Object's [[Get]] method to access the 'get' property (8.10.5 step
     7.a)
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
         var obj = {};
 
-        try {
             Math.get = function () {
                 return "mathGetProperty";
             };
 
             Object.defineProperty(obj, "property", Math);
 
-            return obj.property === "mathGetProperty";
-        } finally {
-            delete Math.get;
-        }
-    }
-runTestCase(testcase);
+assert.sameValue(obj.property, "mathGetProperty", 'obj.property');
diff --git a/test/built-ins/Object/defineProperty/15.2.3.6-3-224-1.js b/test/built-ins/Object/defineProperty/15.2.3.6-3-224-1.js
index cdf29528e68f85e55d4a2f3091c16972779c6fcf..4e2957df909b89c8cf33a4479cb2c868c314fe68 100644
--- a/test/built-ins/Object/defineProperty/15.2.3.6-3-224-1.js
+++ b/test/built-ins/Object/defineProperty/15.2.3.6-3-224-1.js
@@ -7,12 +7,10 @@ description: >
     Object.defineProperty - 'Attributes' is a Date object that uses
     Object's [[Get]] method to access the 'get' property of prototype
     object (8.10.5 step 7.a)
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
         var obj = {};
-        try {
+
             Date.prototype.get = function () {
                 return "dateGetProperty";
             };
@@ -20,9 +18,4 @@ function testcase() {
 
             Object.defineProperty(obj, "property", dateObj);
 
-            return obj.property === "dateGetProperty";
-        } finally {
-            delete Date.prototype.get;
-        }
-    }
-runTestCase(testcase);
+assert.sameValue(obj.property, "dateGetProperty", 'obj.property');
diff --git a/test/built-ins/Object/defineProperty/15.2.3.6-3-225-1.js b/test/built-ins/Object/defineProperty/15.2.3.6-3-225-1.js
index c8caf8bec5adf3118d711ed48948d59f932a90f9..cac5367617ede93048d7dcb817ff55c189fb821d 100644
--- a/test/built-ins/Object/defineProperty/15.2.3.6-3-225-1.js
+++ b/test/built-ins/Object/defineProperty/15.2.3.6-3-225-1.js
@@ -7,12 +7,10 @@ description: >
     Object.defineProperty - 'Attributes' is a RegExp object that uses
     Object's [[Get]] method to access the 'get' property of prototype
     object (8.10.5 step 7.a)
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
         var obj = {};
-        try {
+
             RegExp.prototype.get = function () {
                 return "regExpGetProperty";
             };
@@ -21,9 +19,4 @@ function testcase() {
 
             Object.defineProperty(obj, "property", regObj);
 
-            return obj.property === "regExpGetProperty";
-        } finally {
-            delete RegExp.prototype.get;
-        }
-    }
-runTestCase(testcase);
+assert.sameValue(obj.property, "regExpGetProperty", 'obj.property');
diff --git a/test/built-ins/Object/defineProperty/15.2.3.6-3-226-1.js b/test/built-ins/Object/defineProperty/15.2.3.6-3-226-1.js
index 910c8d4438b5f9ef8fe3e52604e5f28c46b397cb..63ccc8a3a9fc9ae2479de3a46f6764aa1ad7dc5d 100644
--- a/test/built-ins/Object/defineProperty/15.2.3.6-3-226-1.js
+++ b/test/built-ins/Object/defineProperty/15.2.3.6-3-226-1.js
@@ -7,22 +7,14 @@ description: >
     Object.defineProperty - 'Attributes' is the JSON object that uses
     Object's [[Get]] method to access the 'get' property of prototype
     object (8.10.5 step 7.a)
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
         var obj = {};
 
-        try {
             Object.prototype.get = function () {
                 return "jsonGetProperty";
             };
 
             Object.defineProperty(obj, "property", JSON);
 
-            return obj.property === "jsonGetProperty";
-        } finally {
-            delete Object.prototype.get;
-        }
-    }
-runTestCase(testcase);
+assert.sameValue(obj.property, "jsonGetProperty", 'obj.property');
diff --git a/test/built-ins/Object/defineProperty/15.2.3.6-3-226.js b/test/built-ins/Object/defineProperty/15.2.3.6-3-226.js
index 982a667569a1eae5cbde2dd93bb3eef7eb761aa4..404626ea18009be4b2a71f2363581815a8dfa67f 100644
--- a/test/built-ins/Object/defineProperty/15.2.3.6-3-226.js
+++ b/test/built-ins/Object/defineProperty/15.2.3.6-3-226.js
@@ -7,22 +7,14 @@ description: >
     Object.defineProperty - 'Attributes' is the JSON object that uses
     Object's [[Get]] method to access the 'get' property (8.10.5 step
     7.a)
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
         var obj = {};
 
-        try {
             JSON.get = function () {
                 return "jsonGetProperty";
             };
 
             Object.defineProperty(obj, "property", JSON);
 
-            return obj.property === "jsonGetProperty";
-        } finally {
-            delete JSON.get;
-        }
-    }
-runTestCase(testcase);
+assert.sameValue(obj.property, "jsonGetProperty", 'obj.property');
diff --git a/test/built-ins/Object/defineProperty/15.2.3.6-3-227-1.js b/test/built-ins/Object/defineProperty/15.2.3.6-3-227-1.js
index a512eb5b2aa398d27673ad11d08d16dafb66474d..3b694afa293228a4f41f69ecb013c9cd665cf10d 100644
--- a/test/built-ins/Object/defineProperty/15.2.3.6-3-227-1.js
+++ b/test/built-ins/Object/defineProperty/15.2.3.6-3-227-1.js
@@ -7,12 +7,10 @@ description: >
     Object.defineProperty - 'Attributes' is an Error object that uses
     Object's [[Get]] method to access the 'get' property of prototype
     object (8.10.5 step 7.a)
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
         var obj = {};
-        try {
+
             Error.prototype.get = function () {
                 return "errorGetProperty";
             };
@@ -20,9 +18,4 @@ function testcase() {
 
             Object.defineProperty(obj, "property", errObj);
 
-            return obj.property === "errorGetProperty";
-        } finally {
-            delete Error.prototype.get;
-        }
-    }
-runTestCase(testcase);
+assert.sameValue(obj.property, "errorGetProperty", 'obj.property');
diff --git a/test/built-ins/Object/defineProperty/15.2.3.6-3-228-1.js b/test/built-ins/Object/defineProperty/15.2.3.6-3-228-1.js
index 602bd59f215f03d5cee3324756edc320879ed6f1..89b7ba7df21f55061e61e9fff6ec9e23d512b246 100644
--- a/test/built-ins/Object/defineProperty/15.2.3.6-3-228-1.js
+++ b/test/built-ins/Object/defineProperty/15.2.3.6-3-228-1.js
@@ -7,12 +7,10 @@ description: >
     Object.defineProperty - 'Attributes' is an Arguments object which
     implements its own [[Get]] method to access the 'get' property of
     prototype object (8.10.5 step 7.a)
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
         var obj = {};
-        try {
+
             Object.prototype.get = function () {
                 return "argumentGetProperty";
             };
@@ -20,9 +18,4 @@ function testcase() {
 
             Object.defineProperty(obj, "property", argObj);
 
-            return obj.property === "argumentGetProperty";
-        } finally {
-            delete Object.prototype.get;
-        }
-    }
-runTestCase(testcase);
+assert.sameValue(obj.property, "argumentGetProperty", 'obj.property');
diff --git a/test/built-ins/Object/defineProperty/15.2.3.6-3-230.js b/test/built-ins/Object/defineProperty/15.2.3.6-3-230.js
index e5e6e3a49a768cfd638b8ae6afeb4688595e02bd..a7dbfae0a035d5a4f9cbf895cc94f33a59c62a01 100644
--- a/test/built-ins/Object/defineProperty/15.2.3.6-3-230.js
+++ b/test/built-ins/Object/defineProperty/15.2.3.6-3-230.js
@@ -7,24 +7,15 @@ description: >
     Object.defineProperty - 'Attributes' is the global object that
     uses Object's [[Get]] method to access the 'get' property (8.10.5
     step 7.a)
-includes:
-    - runTestCase.js
-    - fnGlobalObject.js
+includes: [fnGlobalObject.js]
 ---*/
 
-function testcase() {
         var obj = {};
 
-        try {
             fnGlobalObject().get = function () {
                 return "globalGetProperty";
             };
 
             Object.defineProperty(obj, "property", fnGlobalObject());
 
-            return obj.property === "globalGetProperty";
-        } finally {
-            delete fnGlobalObject().get;
-        }
-    }
-runTestCase(testcase);
+assert.sameValue(obj.property, "globalGetProperty", 'obj.property');
diff --git a/test/built-ins/Object/defineProperty/15.2.3.6-3-248-1.js b/test/built-ins/Object/defineProperty/15.2.3.6-3-248-1.js
index d346c55d77ba9c7611f812f2b88e947f2278c109..4ff3487ad1c58bf63d8b144cb296e20e7f1b208f 100644
--- a/test/built-ins/Object/defineProperty/15.2.3.6-3-248-1.js
+++ b/test/built-ins/Object/defineProperty/15.2.3.6-3-248-1.js
@@ -7,13 +7,11 @@ description: >
     Object.defineProperty - 'Attributes' is a Function object which
     implements its own [[Get]] method to access the 'set' property of
     prototype object (8.10.5 step 8.a)
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
         var obj = {};
         var data = "data";
-        try {
+
             Function.prototype.set = function (value) {
                 data = value;
             };
@@ -22,9 +20,5 @@ function testcase() {
             Object.defineProperty(obj, "property", funObj);
             obj.property = "overrideData";
 
-            return obj.hasOwnProperty("property") && data === "overrideData";
-        } finally {
-            delete Function.prototype.set;
-        }
-    }
-runTestCase(testcase);
+assert(obj.hasOwnProperty("property"), 'obj.hasOwnProperty("property") !== true');
+assert.sameValue(data, "overrideData", 'data');
diff --git a/test/built-ins/Object/defineProperty/15.2.3.6-3-249-1.js b/test/built-ins/Object/defineProperty/15.2.3.6-3-249-1.js
index 6c1c71c298876113b444df2d4be70c7181732061..12f19e8948815d52d0aebd7ff99c6e4e81a228cf 100644
--- a/test/built-ins/Object/defineProperty/15.2.3.6-3-249-1.js
+++ b/test/built-ins/Object/defineProperty/15.2.3.6-3-249-1.js
@@ -7,13 +7,11 @@ description: >
     Object.defineProperty - 'Attributes' is an Array object that uses
     Object's [[Get]] method to access the 'set' property of prototype
     object (8.10.5 step 8.a)
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
         var obj = {};
         var data = "data";
-        try {
+
             Array.prototype.set = function (value) {
                 data = value;
             };
@@ -22,9 +20,5 @@ function testcase() {
             Object.defineProperty(obj, "property", arrObj);
             obj.property = "overrideData";
 
-            return obj.hasOwnProperty("property") && data === "overrideData";
-        } finally {
-            delete Array.prototype.set;
-        }
-    }
-runTestCase(testcase);
+assert(obj.hasOwnProperty("property"), 'obj.hasOwnProperty("property") !== true');
+assert.sameValue(data, "overrideData", 'data');
diff --git a/test/built-ins/Object/defineProperty/15.2.3.6-3-250-1.js b/test/built-ins/Object/defineProperty/15.2.3.6-3-250-1.js
index c61187c539022ce9960a4289571bf4b6fb4cf4b1..10055b5c8a08397549c454971b0a66baaeaa89d7 100644
--- a/test/built-ins/Object/defineProperty/15.2.3.6-3-250-1.js
+++ b/test/built-ins/Object/defineProperty/15.2.3.6-3-250-1.js
@@ -7,12 +7,10 @@ description: >
     Object.defineProperty - 'Attributes' is a String object that uses
     Object's [[Get]] method to access the 'set' property of prototype
     object (8.10.5 step 8.a)
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
         var obj = {};
-        try {
+
             String.prototype.set = function (value) {
                 data = value;
             };
@@ -22,9 +20,5 @@ function testcase() {
             Object.defineProperty(obj, "property", strObj);
             obj.property = "overrideData";
 
-            return obj.hasOwnProperty("property") && data === "overrideData";
-        } finally {
-            delete String.prototype.set;
-        }
-    }
-runTestCase(testcase);
+assert(obj.hasOwnProperty("property"), 'obj.hasOwnProperty("property") !== true');
+assert.sameValue(data, "overrideData", 'data');
diff --git a/test/built-ins/Object/defineProperty/15.2.3.6-3-251-1.js b/test/built-ins/Object/defineProperty/15.2.3.6-3-251-1.js
index c28602cd3b3b225cc73703c875dfdc8ac5e1e9e4..6ea5a518d48b1cab0f687fc3bbfe1ff725807fe8 100644
--- a/test/built-ins/Object/defineProperty/15.2.3.6-3-251-1.js
+++ b/test/built-ins/Object/defineProperty/15.2.3.6-3-251-1.js
@@ -7,13 +7,11 @@ description: >
     Object.defineProperty - 'Attributes' is a Boolean object that uses
     Object's [[Get]] method to access the 'set' property of prototype
     object (8.10.5 step 8.a)
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
         var obj = {};
         var data = "data";
-        try {
+
             Boolean.prototype.set = function (value) {
                 data = value;
             };
@@ -22,9 +20,5 @@ function testcase() {
             Object.defineProperty(obj, "property", boolObj);
             obj.property = "overrideData";
 
-            return obj.hasOwnProperty("property") && data === "overrideData";
-        } finally {
-            delete Boolean.prototype.set;
-        }
-    }
-runTestCase(testcase);
+assert(obj.hasOwnProperty("property"), 'obj.hasOwnProperty("property") !== true');
+assert.sameValue(data, "overrideData", 'data');
diff --git a/test/built-ins/Object/defineProperty/15.2.3.6-3-252-1.js b/test/built-ins/Object/defineProperty/15.2.3.6-3-252-1.js
index 1961cbddce2725dc3d490decae9ba20b2a85e987..749f8bc335fb3584f2311c2e2ed1169d3682d9c6 100644
--- a/test/built-ins/Object/defineProperty/15.2.3.6-3-252-1.js
+++ b/test/built-ins/Object/defineProperty/15.2.3.6-3-252-1.js
@@ -7,13 +7,11 @@ description: >
     Object.defineProperty - 'Attributes' is a Number object that uses
     Object's [[Get]] method to access the 'set' property of prototype
     object (8.10.5 step 8.a)
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
         var obj = {};
         var data = "data";
-        try {
+
             Number.prototype.set = function (value) {
                 data = value;
             };
@@ -22,9 +20,5 @@ function testcase() {
             Object.defineProperty(obj, "property", numObj);
             obj.property = "overrideData";
 
-            return obj.hasOwnProperty("property") && data === "overrideData";
-        } finally {
-            delete Number.prototype.set;
-        }
-    }
-runTestCase(testcase);
+assert(obj.hasOwnProperty("property"), 'obj.hasOwnProperty("property") !== true');
+assert.sameValue(data, "overrideData", 'data');
diff --git a/test/built-ins/Object/defineProperty/15.2.3.6-3-253-1.js b/test/built-ins/Object/defineProperty/15.2.3.6-3-253-1.js
index acf887909fbb6121efd06278a2ebcbf5fb5d7006..96622fe5086ba16c246cff3355730a060733e642 100644
--- a/test/built-ins/Object/defineProperty/15.2.3.6-3-253-1.js
+++ b/test/built-ins/Object/defineProperty/15.2.3.6-3-253-1.js
@@ -7,14 +7,11 @@ description: >
     Object.defineProperty - 'Attributes' is the Math object that uses
     Object's [[Get]] method to access the 'set' property of prototype
     object (8.10.5 step 8.a)
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
         var obj = {};
         var data = "data";
 
-        try {
             Object.prototype.set = function (value) {
                 data = value;
             };
@@ -22,9 +19,5 @@ function testcase() {
             Object.defineProperty(obj, "property", Math);
             obj.property = "overrideData";
 
-            return obj.hasOwnProperty("property") && data === "overrideData";
-        } finally {
-            delete Object.prototype.set;
-        }
-    }
-runTestCase(testcase);
+assert(obj.hasOwnProperty("property"), 'obj.hasOwnProperty("property") !== true');
+assert.sameValue(data, "overrideData", 'data');
diff --git a/test/built-ins/Object/defineProperty/15.2.3.6-3-253.js b/test/built-ins/Object/defineProperty/15.2.3.6-3-253.js
index d9e66b08f7612ed941b08a7abe2619af4ea9b18e..322dfe1f0295063768f21e8042190e1a52ad008f 100644
--- a/test/built-ins/Object/defineProperty/15.2.3.6-3-253.js
+++ b/test/built-ins/Object/defineProperty/15.2.3.6-3-253.js
@@ -7,14 +7,11 @@ description: >
     Object.defineProperty - 'Attributes' is the Math object that uses
     Object's [[Get]] method to access the 'set' property (8.10.5 step
     8.a)
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
         var obj = {};
         var data = "data";
 
-        try {
             Math.set = function (value) {
                 data = value;
             };
@@ -22,9 +19,5 @@ function testcase() {
             Object.defineProperty(obj, "property", Math);
             obj.property = "overrideData";
 
-            return obj.hasOwnProperty("property") && data === "overrideData";
-        } finally {
-            delete Math.set;
-        }
-    }
-runTestCase(testcase);
+assert(obj.hasOwnProperty("property"), 'obj.hasOwnProperty("property") !== true');
+assert.sameValue(data, "overrideData", 'data');
diff --git a/test/built-ins/Object/defineProperty/15.2.3.6-3-254-1.js b/test/built-ins/Object/defineProperty/15.2.3.6-3-254-1.js
index 33b696c2a32dce6d1a2cc56db2f849eae0cd759b..9b3a47fe4ed14448329d270974eb111f54248fbb 100644
--- a/test/built-ins/Object/defineProperty/15.2.3.6-3-254-1.js
+++ b/test/built-ins/Object/defineProperty/15.2.3.6-3-254-1.js
@@ -7,13 +7,11 @@ description: >
     Object.defineProperty - 'Attributes' is a Date object that uses
     Object's [[Get]] method to access the 'set' property of prototype
     object (8.10.5 step 8.a)
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
         var obj = {};
         var data = "data";
-        try {
+
             Date.prototype.set = function (value) {
                 data = value;
             };
@@ -22,9 +20,5 @@ function testcase() {
             Object.defineProperty(obj, "property", dateObj);
             obj.property = "overrideData";
 
-            return obj.hasOwnProperty("property") && data === "overrideData";
-        } finally {
-            delete Date.prototype.set;
-        }
-    }
-runTestCase(testcase);
+assert(obj.hasOwnProperty("property"), 'obj.hasOwnProperty("property") !== true');
+assert.sameValue(data, "overrideData", 'data');
diff --git a/test/built-ins/Object/defineProperty/15.2.3.6-3-255-1.js b/test/built-ins/Object/defineProperty/15.2.3.6-3-255-1.js
index 7d9ae47424030827d5f76043fe2669fd1f30d1c0..15c2b421e0051390d899be8b3a7871c814f218e5 100644
--- a/test/built-ins/Object/defineProperty/15.2.3.6-3-255-1.js
+++ b/test/built-ins/Object/defineProperty/15.2.3.6-3-255-1.js
@@ -7,13 +7,11 @@ description: >
     Object.defineProperty - 'Attributes' is a RegExp object that uses
     Object's [[Get]] method to access the 'set' property of prototype
     object (8.10.5 step 8.a)
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
         var obj = {};
         var data = "data";
-        try {
+
             RegExp.prototype.set = function (value) {
                 data = value;
             };
@@ -22,9 +20,5 @@ function testcase() {
             Object.defineProperty(obj, "property", regObj);
             obj.property = "overrideData";
 
-            return obj.hasOwnProperty("property") && data === "overrideData";
-        } finally {
-            delete RegExp.prototype.set;
-        }
-    }
-runTestCase(testcase);
+assert(obj.hasOwnProperty("property"), 'obj.hasOwnProperty("property") !== true');
+assert.sameValue(data, "overrideData", 'data');
diff --git a/test/built-ins/Object/defineProperty/15.2.3.6-3-256-1.js b/test/built-ins/Object/defineProperty/15.2.3.6-3-256-1.js
index 1512bc1f7c1286e576a5f0d10607677aa15a50f5..86747c4b879e96acf92f097fc6ec41631e173459 100644
--- a/test/built-ins/Object/defineProperty/15.2.3.6-3-256-1.js
+++ b/test/built-ins/Object/defineProperty/15.2.3.6-3-256-1.js
@@ -7,14 +7,11 @@ description: >
     Object.defineProperty - 'Attributes' is the JSON object that uses
     Object's [[Get]] method to access the 'set' property of prototype
     object (8.10.5 step 8.a)
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
         var obj = {};
         var data = "data";
 
-        try {
             Object.prototype.set = function (value) {
                 data = value;
             };
@@ -22,9 +19,5 @@ function testcase() {
             Object.defineProperty(obj, "property", JSON);
             obj.property = "overrideData";
 
-            return obj.hasOwnProperty("property") && data === "overrideData";
-        } finally {
-            delete Object.prototype.set;
-        }
-    }
-runTestCase(testcase);
+assert(obj.hasOwnProperty("property"), 'obj.hasOwnProperty("property") !== true');
+assert.sameValue(data, "overrideData", 'data');
diff --git a/test/built-ins/Object/defineProperty/15.2.3.6-3-256.js b/test/built-ins/Object/defineProperty/15.2.3.6-3-256.js
index da7043199e5b4f08b612f6b95799715aba5dd3fe..67353422e9cf3b990c4b05bbf4af144db34b9a0c 100644
--- a/test/built-ins/Object/defineProperty/15.2.3.6-3-256.js
+++ b/test/built-ins/Object/defineProperty/15.2.3.6-3-256.js
@@ -7,14 +7,11 @@ description: >
     Object.defineProperty - 'Attributes' is the JSON object that uses
     Object's [[Get]] method to access the 'set' property (8.10.5 step
     8.a)
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
         var obj = {};
         var data = "data";
 
-        try {
             JSON.set = function (value) {
                 data = value;
             };
@@ -22,9 +19,5 @@ function testcase() {
             Object.defineProperty(obj, "property", JSON);
             obj.property = "overrideData";
 
-            return obj.hasOwnProperty("property") && data === "overrideData";
-        } finally {
-            delete JSON.set;
-        }
-    }
-runTestCase(testcase);
+assert(obj.hasOwnProperty("property"), 'obj.hasOwnProperty("property") !== true');
+assert.sameValue(data, "overrideData", 'data');
diff --git a/test/built-ins/Object/defineProperty/15.2.3.6-3-257-1.js b/test/built-ins/Object/defineProperty/15.2.3.6-3-257-1.js
index 037898c4cd0ec117f31c7fada472275f0312617e..a0fe03339262b3ef6833dd83a68fea13168f8b03 100644
--- a/test/built-ins/Object/defineProperty/15.2.3.6-3-257-1.js
+++ b/test/built-ins/Object/defineProperty/15.2.3.6-3-257-1.js
@@ -7,14 +7,11 @@ description: >
     Object.defineProperty - 'Attributes' is an Error object that uses
     Object's [[Get]] method to access the 'set' property of prototype
     object (8.10.5 step 8.a)
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
         var obj = {};
         var data = "data";
 
-        try {
             Error.prototype.set = function (value) {
                 data = value;
             };
@@ -23,9 +20,5 @@ function testcase() {
             Object.defineProperty(obj, "property", errObj);
             obj.property = "overrideData";
 
-            return obj.hasOwnProperty("property") && data === "overrideData";
-        } finally {
-            delete Error.prototype.set;
-        }
-    }
-runTestCase(testcase);
+assert(obj.hasOwnProperty("property"), 'obj.hasOwnProperty("property") !== true');
+assert.sameValue(data, "overrideData", 'data');
diff --git a/test/built-ins/Object/defineProperty/15.2.3.6-3-258-1.js b/test/built-ins/Object/defineProperty/15.2.3.6-3-258-1.js
index 0d221547138f1997cf8007e0f410fced2e8196b9..0b250f10f21d2dd5b089d9e17cfb477be77b311b 100644
--- a/test/built-ins/Object/defineProperty/15.2.3.6-3-258-1.js
+++ b/test/built-ins/Object/defineProperty/15.2.3.6-3-258-1.js
@@ -7,13 +7,11 @@ description: >
     Object.defineProperty - 'Attributes' is an Arguments object which
     implements its own [[Get]] method to access the 'set' property of
     prototype object (8.10.5 step 8.a)
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
         var obj = {};
         var data = "data";
-        try {
+
             Object.prototype.set = function (value) {
                 data = value;
             };
@@ -22,9 +20,5 @@ function testcase() {
             Object.defineProperty(obj, "property", argObj);
             obj.property = "overrideData";
 
-            return obj.hasOwnProperty("property") && data === "overrideData";
-        } finally {
-            delete Object.prototype.set;
-        }
-    }
-runTestCase(testcase);
+assert(obj.hasOwnProperty("property"), 'obj.hasOwnProperty("property") !== true');
+assert.sameValue(data, "overrideData", 'data');
diff --git a/test/built-ins/Object/defineProperty/15.2.3.6-3-260.js b/test/built-ins/Object/defineProperty/15.2.3.6-3-260.js
index 24c3df67fb7993490cf058fe84dd6b4a4e03cc5a..ce66181c2c50c6ed5650fb67ccdc4007b2c9d2f5 100644
--- a/test/built-ins/Object/defineProperty/15.2.3.6-3-260.js
+++ b/test/built-ins/Object/defineProperty/15.2.3.6-3-260.js
@@ -7,16 +7,12 @@ description: >
     Object.defineProperty - 'Attributes' is the global object that
     uses Object's [[Get]] method to access the 'set' property (8.10.5
     step 8.a)
-includes:
-    - runTestCase.js
-    - fnGlobalObject.js
+includes: [fnGlobalObject.js]
 ---*/
 
-function testcase() {
         var obj = {};
         var data = "data";
 
-        try {
             fnGlobalObject().set = function (value) {
                 data = value;
             };
@@ -24,9 +20,5 @@ function testcase() {
             Object.defineProperty(obj, "property", fnGlobalObject());
             obj.property = "overrideData";
 
-            return obj.hasOwnProperty("property") && data === "overrideData";
-        } finally {
-            delete fnGlobalObject().set;
-        }
-    }
-runTestCase(testcase);
+assert(obj.hasOwnProperty("property"), 'obj.hasOwnProperty("property") !== true');
+assert.sameValue(data, "overrideData", 'data');
diff --git a/test/built-ins/Object/defineProperty/15.2.3.6-3-33-1.js b/test/built-ins/Object/defineProperty/15.2.3.6-3-33-1.js
index 74181ef23df9820131bc8ccd4ffe61214f9121f2..17f152928a3ad4160c0cf5e6c2f22a5b2c377903 100644
--- a/test/built-ins/Object/defineProperty/15.2.3.6-3-33-1.js
+++ b/test/built-ins/Object/defineProperty/15.2.3.6-3-33-1.js
@@ -7,13 +7,11 @@ description: >
     Object.defineProperty - 'Attributes' is a Function object which
     implements its own [[Get]] method to access the 'enumerable'
     property of prototype object (8.10.5 step 3.a)
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
         var obj = {};
         var accessed = false;
-        try {
+
             Function.prototype.enumerable = true;
             var fun = function () { };
 
@@ -25,9 +23,4 @@ function testcase() {
                 }
             }
 
-            return accessed;
-        } finally {
-            delete Function.prototype.enumerable;
-        }
-    }
-runTestCase(testcase);
+assert(accessed, 'accessed !== true');
diff --git a/test/built-ins/Object/defineProperty/15.2.3.6-3-34-1.js b/test/built-ins/Object/defineProperty/15.2.3.6-3-34-1.js
index b41c1fbb6854de1da096acd5e4bcaae0f1ee7c79..6a54cf1728c4277040c5b2f02a338e7e3b218734 100644
--- a/test/built-ins/Object/defineProperty/15.2.3.6-3-34-1.js
+++ b/test/built-ins/Object/defineProperty/15.2.3.6-3-34-1.js
@@ -7,13 +7,11 @@ description: >
     Object.defineProperty - 'Attributes' is an Array object that uses
     Object's [[Get]] method to access the 'enumerable' property of
     prototype object (8.10.5 step 3.a)
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
         var obj = {};
         var accessed = false;
-        try {
+
             Array.prototype.enumerable = true;
             var arrObj = [];
 
@@ -25,9 +23,4 @@ function testcase() {
                 }
             }
 
-            return accessed;
-        } finally {
-            delete Array.prototype.enumerable;
-        }
-    }
-runTestCase(testcase);
+assert(accessed, 'accessed !== true');
diff --git a/test/built-ins/Object/defineProperty/15.2.3.6-3-35-1.js b/test/built-ins/Object/defineProperty/15.2.3.6-3-35-1.js
index 867bc4412326ef1144fef2fd87624a16ccd150ed..908e603b1c76e1cb30cb44dda8590e9e61bf068c 100644
--- a/test/built-ins/Object/defineProperty/15.2.3.6-3-35-1.js
+++ b/test/built-ins/Object/defineProperty/15.2.3.6-3-35-1.js
@@ -7,13 +7,11 @@ description: >
     Object.defineProperty - 'Attributes' is a String object that uses
     Object's [[Get]] method to access the 'enumerable' property of
     prototype object (8.10.5 step 3.a)
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
         var obj = {};
         var accessed = false;
-        try {
+
             String.prototype.enumerable = true;
             var strObj = new String();
 
@@ -25,9 +23,4 @@ function testcase() {
                 }
             }
 
-            return accessed;
-        } finally {
-            delete String.prototype.enumerable;
-        }
-    }
-runTestCase(testcase);
+assert(accessed, 'accessed !== true');
diff --git a/test/built-ins/Object/defineProperty/15.2.3.6-3-36-1.js b/test/built-ins/Object/defineProperty/15.2.3.6-3-36-1.js
index f62fc229ef1fd3d5b79f8c3817290ca48bf14e39..a385748a7f16b0b938bed1bfe5e547fa3d579c41 100644
--- a/test/built-ins/Object/defineProperty/15.2.3.6-3-36-1.js
+++ b/test/built-ins/Object/defineProperty/15.2.3.6-3-36-1.js
@@ -7,13 +7,11 @@ description: >
     Object.defineProperty - 'Attributes' is a Boolean object that uses
     Object's [[Get]] method to access the 'enumerable' property of
     prototype object (8.10.5 step 3.a)
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
         var obj = {};
         var accessed = false;
-        try {
+
             Boolean.prototype.enumerable = true;
             var boolObj = new Boolean(true);
 
@@ -25,9 +23,4 @@ function testcase() {
                 }
             }
 
-            return accessed;
-        } finally {
-            delete Boolean.prototype.enumerable;
-        }
-    }
-runTestCase(testcase);
+assert(accessed, 'accessed !== true');
diff --git a/test/built-ins/Object/defineProperty/15.2.3.6-3-37-1.js b/test/built-ins/Object/defineProperty/15.2.3.6-3-37-1.js
index 8452d007f243a7f59ff4e934b7d9963c484500f6..d9e83be1f64bb92eac95f7ac08de2a694b0df3dd 100644
--- a/test/built-ins/Object/defineProperty/15.2.3.6-3-37-1.js
+++ b/test/built-ins/Object/defineProperty/15.2.3.6-3-37-1.js
@@ -7,13 +7,11 @@ description: >
     Object.defineProperty - 'Attributes' is a Number object that uses
     Object's [[Get]] method to access the 'enumerable' property of
     prototype object (8.10.5 step 3.a)
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
         var obj = {};
         var accessed = false;
-        try {
+
             Number.prototype.enumerable = true;
             var numObj = new Number(-2);
 
@@ -25,9 +23,4 @@ function testcase() {
                 }
             }
 
-            return accessed;
-        } finally {
-            delete Number.prototype.enumerable;
-        }
-    }
-runTestCase(testcase);
+assert(accessed, 'accessed !== true');
diff --git a/test/built-ins/Object/defineProperty/15.2.3.6-3-38-1.js b/test/built-ins/Object/defineProperty/15.2.3.6-3-38-1.js
index eddd64c11dd55b3a18de841f14837ce24124b088..c49dc19dc705dd74897c5f1f2798b92e47cb5fef 100644
--- a/test/built-ins/Object/defineProperty/15.2.3.6-3-38-1.js
+++ b/test/built-ins/Object/defineProperty/15.2.3.6-3-38-1.js
@@ -7,13 +7,11 @@ description: >
     Object.defineProperty - 'Attributes' is the Math object that uses
     Object's [[Get]] method to access the 'enumerable' property of
     prototype object (8.10.5 step 3.a)
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
         var obj = {};
         var accessed = false;
-        try {
+
             Object.prototype.enumerable = true;
 
             Object.defineProperty(obj, "property", Math);
@@ -23,9 +21,5 @@ function testcase() {
                     accessed = true;
                 }
             }
-            return accessed;
-        } finally {
-            delete Object.prototype.enumerable;
-        }
-    }
-runTestCase(testcase);
+
+assert(accessed, 'accessed !== true');
diff --git a/test/built-ins/Object/defineProperty/15.2.3.6-3-38.js b/test/built-ins/Object/defineProperty/15.2.3.6-3-38.js
index 65bad194f89d1eca2f8ab340ef5df1e4969e36a3..ea7b3809fbf2437051a9ff269a736a517c758f86 100644
--- a/test/built-ins/Object/defineProperty/15.2.3.6-3-38.js
+++ b/test/built-ins/Object/defineProperty/15.2.3.6-3-38.js
@@ -7,14 +7,11 @@ description: >
     Object.defineProperty - 'Attributes' is the Math object that uses
     Object's [[Get]] method to access the 'enumerable' property
     (8.10.5 step 3.a)
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
         var obj = {};
         var accessed = false;
 
-        try {
             Math.enumerable = true;
 
             Object.defineProperty(obj, "property", Math);
@@ -24,9 +21,5 @@ function testcase() {
                     accessed = true;
                 }
             }
-            return accessed;
-        } finally {
-            delete Math.enumerable;
-        }
-    }
-runTestCase(testcase);
+
+assert(accessed, 'accessed !== true');
diff --git a/test/built-ins/Object/defineProperty/15.2.3.6-3-39-1.js b/test/built-ins/Object/defineProperty/15.2.3.6-3-39-1.js
index ac30e2ab207820c2530cef72c4def474ebb39f7a..54bc49d18ff00a37a192a26dc5ca5714d8f73954 100644
--- a/test/built-ins/Object/defineProperty/15.2.3.6-3-39-1.js
+++ b/test/built-ins/Object/defineProperty/15.2.3.6-3-39-1.js
@@ -7,14 +7,11 @@ description: >
     Object.defineProperty - 'Attributes' is a Date object that uses
     Object's [[Get]] method to access the 'enumerable' property of
     prototype object (8.10.5 step 3.a)
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
         var obj = {};
         var accessed = false;
 
-        try {
             Date.prototype.enumerable = true;
             var dateObj = new Date();
 
@@ -25,9 +22,5 @@ function testcase() {
                     accessed = true;
                 }
             }
-            return accessed;
-        } finally {
-            delete Date.prototype.enumerable;
-        }
-    }
-runTestCase(testcase);
+
+assert(accessed, 'accessed !== true');
diff --git a/test/built-ins/Object/defineProperty/15.2.3.6-3-40-1.js b/test/built-ins/Object/defineProperty/15.2.3.6-3-40-1.js
index 697f697f0c1c646f69b715be720540f36c516940..6f2548ffd6dfefd3087a3392c50b636646deb394 100644
--- a/test/built-ins/Object/defineProperty/15.2.3.6-3-40-1.js
+++ b/test/built-ins/Object/defineProperty/15.2.3.6-3-40-1.js
@@ -7,13 +7,11 @@ description: >
     Object.defineProperty - 'Attributes' is an RegExp object that uses
     Object's [[Get]] method to access the 'enumerable' property of
     prototype object (8.10.5 step 3.a)
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
         var obj = {};
         var accessed = false;
-        try {
+
             RegExp.prototype.enumerable = true;
             var regObj = new RegExp();
 
@@ -25,9 +23,4 @@ function testcase() {
                 }
             }
 
-            return accessed;
-        } finally {
-            delete RegExp.prototype.enumerable;
-        }
-    }
-runTestCase(testcase);
+assert(accessed, 'accessed !== true');
diff --git a/test/built-ins/Object/defineProperty/15.2.3.6-3-41-1.js b/test/built-ins/Object/defineProperty/15.2.3.6-3-41-1.js
index c871601d68a0c9ed2831e7646f70124dd72b58f9..c53c418401b1368a5c4f97f6c7cf90140ac0b356 100644
--- a/test/built-ins/Object/defineProperty/15.2.3.6-3-41-1.js
+++ b/test/built-ins/Object/defineProperty/15.2.3.6-3-41-1.js
@@ -7,13 +7,11 @@ description: >
     Object.defineProperty - 'Attributes' is the JSON object that uses
     Object's [[Get]] method to access the 'enumerable' property of
     prototype object (8.10.5 step 3.a)
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
         var obj = {};
         var accessed = false;
-        try {
+
             Object.prototype.enumerable = true;
 
             Object.defineProperty(obj, "property", JSON);
@@ -24,9 +22,4 @@ function testcase() {
                 }
             }
 
-            return accessed;
-        } finally {
-            delete Object.prototype.enumerable;
-        }
-    }
-runTestCase(testcase);
+assert(accessed, 'accessed !== true');
diff --git a/test/built-ins/Object/defineProperty/15.2.3.6-3-41.js b/test/built-ins/Object/defineProperty/15.2.3.6-3-41.js
index 381fb50bdbdf1eef17ac5d92e98310c27ffc491d..6475a5ceb665f45ec4491c7d5cb11c4652dfda77 100644
--- a/test/built-ins/Object/defineProperty/15.2.3.6-3-41.js
+++ b/test/built-ins/Object/defineProperty/15.2.3.6-3-41.js
@@ -7,14 +7,11 @@ description: >
     Object.defineProperty - 'Attributes' is the JSON object that uses
     Object's [[Get]] method to access the 'enumerable' property
     (8.10.5 step 3.a)
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
         var obj = {};
         var accessed = false;
 
-        try {
             JSON.enumerable = true;
 
             Object.defineProperty(obj, "property", JSON);
@@ -25,9 +22,4 @@ function testcase() {
                 }
             }
 
-            return accessed;
-        } finally {
-            delete JSON.enumerable;
-        }
-    }
-runTestCase(testcase);
+assert(accessed, 'accessed !== true');
diff --git a/test/built-ins/Object/defineProperty/15.2.3.6-3-42-1.js b/test/built-ins/Object/defineProperty/15.2.3.6-3-42-1.js
index 4ce09b5e3c4f6133fafe86773c04c551a837f191..41e13499fbe770940b9979d744a3412be45036df 100644
--- a/test/built-ins/Object/defineProperty/15.2.3.6-3-42-1.js
+++ b/test/built-ins/Object/defineProperty/15.2.3.6-3-42-1.js
@@ -7,13 +7,11 @@ description: >
     Object.defineProperty - 'Attributes' is an Error object that uses
     Object's [[Get]] method to access the 'enumerable' property of
     prototype object (8.10.5 step 3.a)
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
         var obj = {};
         var accessed = false;
-        try {
+
             Error.prototype.enumerable = true;
             var errObj = new Error();
 
@@ -25,9 +23,4 @@ function testcase() {
                 }
             }
 
-            return accessed;
-        } finally {
-            delete Error.prototype.enumerable;
-        }
-    }
-runTestCase(testcase);
+assert(accessed, 'accessed !== true');
diff --git a/test/built-ins/Object/defineProperty/15.2.3.6-3-43-1.js b/test/built-ins/Object/defineProperty/15.2.3.6-3-43-1.js
index 7e0325f17e9b198ae6864bd1603e25a57e43a204..7a799db391aeb7a01740ddb96a8fa51c20ef132d 100644
--- a/test/built-ins/Object/defineProperty/15.2.3.6-3-43-1.js
+++ b/test/built-ins/Object/defineProperty/15.2.3.6-3-43-1.js
@@ -7,13 +7,11 @@ description: >
     Object.defineProperty - 'Attributes' is an Arguments object which
     implements its own [[Get]] method to access the 'enumerable'
     property of prototype object (8.10.5 step 3.a)
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
         var obj = {};
         var accessed = false;
-        try {
+
             Object.prototype.enumerable = true;
             var argObj = (function () { return arguments; })();
 
@@ -25,9 +23,4 @@ function testcase() {
                 }
             }
 
-            return accessed;
-        } finally {
-            delete Object.prototype.enumerable;
-        }
-    }
-runTestCase(testcase);
+assert(accessed, 'accessed !== true');
diff --git a/test/built-ins/Object/defineProperty/15.2.3.6-3-45.js b/test/built-ins/Object/defineProperty/15.2.3.6-3-45.js
index ed034969fad7676b4606803daf66c5df92904c67..114fcde602132878834dee840763efb0dc108988 100644
--- a/test/built-ins/Object/defineProperty/15.2.3.6-3-45.js
+++ b/test/built-ins/Object/defineProperty/15.2.3.6-3-45.js
@@ -7,16 +7,12 @@ description: >
     Object.defineProperty - 'Attributes' is the global object that
     uses Object's [[Get]] method to access the 'enumerable' property
     (8.10.5 step 3.a)
-includes:
-    - runTestCase.js
-    - fnGlobalObject.js
+includes: [fnGlobalObject.js]
 ---*/
 
-function testcase() {
         var obj = {};
         var accessed = false;
 
-        try {
             fnGlobalObject().enumerable = true;
 
             Object.defineProperty(obj, "property", fnGlobalObject());
@@ -27,9 +23,4 @@ function testcase() {
                 }
             }
 
-            return accessed;
-        } finally {
-            delete fnGlobalObject().enumerable;
-        }
-    }
-runTestCase(testcase);
+assert(accessed, 'accessed !== true');
diff --git a/test/built-ins/Object/defineProperty/15.2.3.6-3-86-1.js b/test/built-ins/Object/defineProperty/15.2.3.6-3-86-1.js
index 894f753f5ae1ddce6f5d7e4e8da15b2146d13859..016698c0e1dbb83d71d7c480bc7c88af1fe3f14f 100644
--- a/test/built-ins/Object/defineProperty/15.2.3.6-3-86-1.js
+++ b/test/built-ins/Object/defineProperty/15.2.3.6-3-86-1.js
@@ -7,12 +7,10 @@ description: >
     Object.defineProperty - 'Attributes' is a Function object which
     implements its own [[Get]] method to access the 'configurable'
     property of prototype object (8.10.5 step 4.a)
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
         var obj = {};
-        try {
+
             Function.prototype.configurable = true;
             var funObj = function (a, b) {
                 return a + b;
@@ -26,9 +24,5 @@ function testcase() {
 
             var afterDeleted = obj.hasOwnProperty("property");
 
-            return beforeDeleted === true && afterDeleted === false;
-        } finally {
-            delete Function.prototype.configurable;
-        }
-    }
-runTestCase(testcase);
+assert.sameValue(beforeDeleted, true, 'beforeDeleted');
+assert.sameValue(afterDeleted, false, 'afterDeleted');
diff --git a/test/built-ins/Object/defineProperty/15.2.3.6-3-87-1.js b/test/built-ins/Object/defineProperty/15.2.3.6-3-87-1.js
index 2b22af147353c4cf7ed5b9620d38651beb452084..b28cb688109760721ed46d452acdad462ac81180 100644
--- a/test/built-ins/Object/defineProperty/15.2.3.6-3-87-1.js
+++ b/test/built-ins/Object/defineProperty/15.2.3.6-3-87-1.js
@@ -7,12 +7,10 @@ description: >
     Object.defineProperty - 'Attributes' is an Array object that uses
     Object's [[Get]] method to access the 'configurable' property
     (8.10.5 step 4.a)
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
         var obj = {};
-        try {
+
             Array.prototype.configurable = true;
             var arrObj = [1, 2, 3];
 
@@ -24,9 +22,5 @@ function testcase() {
 
             var afterDeleted = obj.hasOwnProperty("property");
 
-            return beforeDeleted === true && afterDeleted === false;
-        } finally {
-            delete Array.prototype.configurable;
-        }
-    }
-runTestCase(testcase);
+assert.sameValue(beforeDeleted, true, 'beforeDeleted');
+assert.sameValue(afterDeleted, false, 'afterDeleted');
diff --git a/test/built-ins/Object/defineProperty/15.2.3.6-3-88-1.js b/test/built-ins/Object/defineProperty/15.2.3.6-3-88-1.js
index 374e43db0fd257a9b23803f839dd176eadc31173..c0708bbe198cbb47aa4356c2110984a77c59d314 100644
--- a/test/built-ins/Object/defineProperty/15.2.3.6-3-88-1.js
+++ b/test/built-ins/Object/defineProperty/15.2.3.6-3-88-1.js
@@ -7,12 +7,10 @@ description: >
     Object.defineProperty - 'Attributes' is a String object that uses
     Object's [[Get]] method to access the 'configurable' property
     (8.10.5 step 4.a)
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
         var obj = {};
-        try {
+
             String.prototype.configurable = true;
             var strObj = new String("abc");
 
@@ -24,9 +22,5 @@ function testcase() {
 
             var afterDeleted = obj.hasOwnProperty("property");
 
-            return beforeDeleted === true && afterDeleted === false;
-        } finally {
-            delete String.prototype.configurable;
-        }
-    }
-runTestCase(testcase);
+assert.sameValue(beforeDeleted, true, 'beforeDeleted');
+assert.sameValue(afterDeleted, false, 'afterDeleted');
diff --git a/test/built-ins/Object/defineProperty/15.2.3.6-3-89-1.js b/test/built-ins/Object/defineProperty/15.2.3.6-3-89-1.js
index d5b1212f6575fdc0793fb44117496d27dc0b1a80..2ee6e17924379cb1a1e41651b7d3b632bf806705 100644
--- a/test/built-ins/Object/defineProperty/15.2.3.6-3-89-1.js
+++ b/test/built-ins/Object/defineProperty/15.2.3.6-3-89-1.js
@@ -7,12 +7,10 @@ description: >
     Object.defineProperty - 'Attributes' is a Boolean object that uses
     Object's [[Get]] method to access the 'configurable' property
     (8.10.5 step 4.a)
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
         var obj = {};
-        try {
+
             Boolean.prototype.configurable = true;
             var boolObj = new Boolean(true);
 
@@ -24,9 +22,5 @@ function testcase() {
 
             var afterDeleted = obj.hasOwnProperty("property");
 
-            return beforeDeleted === true && afterDeleted === false;
-        } finally {
-            delete Boolean.prototype.configurable;
-        }
-    }
-runTestCase(testcase);
+assert.sameValue(beforeDeleted, true, 'beforeDeleted');
+assert.sameValue(afterDeleted, false, 'afterDeleted');
diff --git a/test/built-ins/Object/defineProperty/15.2.3.6-3-90-1.js b/test/built-ins/Object/defineProperty/15.2.3.6-3-90-1.js
index 4d9174d19aef4d813b00e4b741938a478ac30027..d867abbc69eac0c1a1a17d8f669d7948270e22e2 100644
--- a/test/built-ins/Object/defineProperty/15.2.3.6-3-90-1.js
+++ b/test/built-ins/Object/defineProperty/15.2.3.6-3-90-1.js
@@ -7,12 +7,10 @@ description: >
     Object.defineProperty - 'Attributes' is a Number object that uses
     Object's [[Get]] method to access the 'configurable' property
     (8.10.5 step 4.a)
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
         var obj = {};
-        try {
+
             Number.prototype.configurable = true;
             var numObj = new Number(-2);
 
@@ -24,9 +22,5 @@ function testcase() {
 
             var afterDeleted = obj.hasOwnProperty("property");
 
-            return beforeDeleted === true && afterDeleted === false;
-        } finally {
-            delete Number.prototype.configurable;
-        }
-    }
-runTestCase(testcase);
+assert.sameValue(beforeDeleted, true, 'beforeDeleted');
+assert.sameValue(afterDeleted, false, 'afterDeleted');
diff --git a/test/built-ins/Object/defineProperty/15.2.3.6-3-91-1.js b/test/built-ins/Object/defineProperty/15.2.3.6-3-91-1.js
index 29f44fddc53aa91efd50dbc9bc3869a1eccf4bfd..2191b771e455649617b9ad3f39e88ffc658faf87 100644
--- a/test/built-ins/Object/defineProperty/15.2.3.6-3-91-1.js
+++ b/test/built-ins/Object/defineProperty/15.2.3.6-3-91-1.js
@@ -7,13 +7,10 @@ description: >
     Object.defineProperty - 'Attributes' is the Math object that uses
     Object's [[Get]] method to access the 'configurable' property
     (8.10.5 step 4.a)
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
         var obj = {};
 
-        try {
             Object.prototype.configurable = true;
 
             Object.defineProperty(obj, "property", Math);
@@ -24,9 +21,5 @@ function testcase() {
 
             var afterDeleted = obj.hasOwnProperty("property");
 
-            return beforeDeleted === true && afterDeleted === false;
-        } finally {
-            delete Object.prototype.configurable;
-        }
-    }
-runTestCase(testcase);
+assert.sameValue(beforeDeleted, true, 'beforeDeleted');
+assert.sameValue(afterDeleted, false, 'afterDeleted');
diff --git a/test/built-ins/Object/defineProperty/15.2.3.6-3-91.js b/test/built-ins/Object/defineProperty/15.2.3.6-3-91.js
index 9eb1e64dd98721c9d82ff92ca10b0130c316a2b8..e87007a5aed5444f0bc21c4fdd2e470f9991a5ce 100644
--- a/test/built-ins/Object/defineProperty/15.2.3.6-3-91.js
+++ b/test/built-ins/Object/defineProperty/15.2.3.6-3-91.js
@@ -7,13 +7,10 @@ description: >
     Object.defineProperty - 'Attributes' is the Math object that uses
     Object's [[Get]] method to access the 'configurable' property
     (8.10.5 step 4.a)
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
         var obj = {};
 
-        try {
             Math.configurable = true;
 
             Object.defineProperty(obj, "property", Math);
@@ -24,9 +21,5 @@ function testcase() {
 
             var afterDeleted = obj.hasOwnProperty("property");
 
-            return beforeDeleted === true && afterDeleted === false;
-        } finally {
-            delete Math.configurable;
-        }
-    }
-runTestCase(testcase);
+assert.sameValue(beforeDeleted, true, 'beforeDeleted');
+assert.sameValue(afterDeleted, false, 'afterDeleted');
diff --git a/test/built-ins/Object/defineProperty/15.2.3.6-3-92-1.js b/test/built-ins/Object/defineProperty/15.2.3.6-3-92-1.js
index 4a25c26e655a819ed4a43d1ec7c792425a30c440..8665effb5c8be2404b3854ac5ae9ec61f59f7a6d 100644
--- a/test/built-ins/Object/defineProperty/15.2.3.6-3-92-1.js
+++ b/test/built-ins/Object/defineProperty/15.2.3.6-3-92-1.js
@@ -7,12 +7,10 @@ description: >
     Object.defineProperty - 'Attributes' is a Date object that uses
     Object's [[Get]] method to access the 'configurable' property
     (8.10.5 step 4.a)
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
         var obj = {};
-        try {
+
             Date.prototype.configurable = true;
             var dateObj = new Date();
 
@@ -24,9 +22,5 @@ function testcase() {
 
             var afterDeleted = obj.hasOwnProperty("property");
 
-            return beforeDeleted === true && afterDeleted === false;
-        } finally {
-            delete Date.prototype.configurable;
-        }
-    }
-runTestCase(testcase);
+assert.sameValue(beforeDeleted, true, 'beforeDeleted');
+assert.sameValue(afterDeleted, false, 'afterDeleted');
diff --git a/test/built-ins/Object/defineProperty/15.2.3.6-3-93-1.js b/test/built-ins/Object/defineProperty/15.2.3.6-3-93-1.js
index aed55e537de7e5417ee6cfd8b73bf68e015ecab5..b34879406e2e70e99a345109737f41f20ac7113c 100644
--- a/test/built-ins/Object/defineProperty/15.2.3.6-3-93-1.js
+++ b/test/built-ins/Object/defineProperty/15.2.3.6-3-93-1.js
@@ -7,12 +7,10 @@ description: >
     Object.defineProperty - 'Attributes' is an RegExp object that uses
     Object's [[Get]] method to access the 'configurable' property
     (8.10.5 step 4.a)
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
         var obj = {};
-        try {
+
             RegExp.prototype.configurable = true;
             var regObj = new RegExp();
 
@@ -24,9 +22,5 @@ function testcase() {
 
             var afterDeleted = obj.hasOwnProperty("property");
 
-            return beforeDeleted === true && afterDeleted === false;
-        } finally {
-            delete RegExp.prototype.configurable;
-        }
-    }
-runTestCase(testcase);
+assert.sameValue(beforeDeleted, true, 'beforeDeleted');
+assert.sameValue(afterDeleted, false, 'afterDeleted');
diff --git a/test/built-ins/Object/defineProperty/15.2.3.6-3-94-1.js b/test/built-ins/Object/defineProperty/15.2.3.6-3-94-1.js
index e382a33f6f22ed6a8f91ba295933ee8478d77119..293602b42ff7cff66de12902d3f185cda0133cf9 100644
--- a/test/built-ins/Object/defineProperty/15.2.3.6-3-94-1.js
+++ b/test/built-ins/Object/defineProperty/15.2.3.6-3-94-1.js
@@ -7,13 +7,10 @@ description: >
     Object.defineProperty - 'Attributes' is the JSON object that uses
     Object's [[Get]] method to access the 'configurable' property
     (8.10.5 step 4.a)
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
         var obj = {};
 
-        try {
             Object.prototype.configurable = true;
 
             Object.defineProperty(obj, "property", JSON);
@@ -24,9 +21,5 @@ function testcase() {
 
             var afterDeleted = obj.hasOwnProperty("property");
 
-            return beforeDeleted === true && afterDeleted === false;
-        } finally {
-            delete Object.prototype.configurable;
-        }
-    }
-runTestCase(testcase);
+assert.sameValue(beforeDeleted, true, 'beforeDeleted');
+assert.sameValue(afterDeleted, false, 'afterDeleted');
diff --git a/test/built-ins/Object/defineProperty/15.2.3.6-3-94.js b/test/built-ins/Object/defineProperty/15.2.3.6-3-94.js
index ef9206b3dd6cb6b266e4262d24bdbbcdcad4f1e5..f7cd3d9aad63deb694700794fa034ade6f4e77e9 100644
--- a/test/built-ins/Object/defineProperty/15.2.3.6-3-94.js
+++ b/test/built-ins/Object/defineProperty/15.2.3.6-3-94.js
@@ -7,13 +7,10 @@ description: >
     Object.defineProperty - 'Attributes' is the JSON object that uses
     Object's [[Get]] method to access the 'configurable' property
     (8.10.5 step 4.a)
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
         var obj = {};
 
-        try {
             JSON.configurable = true;
 
             Object.defineProperty(obj, "property", JSON);
@@ -24,9 +21,5 @@ function testcase() {
 
             var afterDeleted = obj.hasOwnProperty("property");
 
-            return beforeDeleted === true && afterDeleted === false;
-        } finally {
-            delete JSON.configurable;
-        }
-    }
-runTestCase(testcase);
+assert.sameValue(beforeDeleted, true, 'beforeDeleted');
+assert.sameValue(afterDeleted, false, 'afterDeleted');
diff --git a/test/built-ins/Object/defineProperty/15.2.3.6-3-95-1.js b/test/built-ins/Object/defineProperty/15.2.3.6-3-95-1.js
index 8947f2118b9117e1062f9fa7c90e6d5ee0bb7070..28d5de387c493080a18239bc1bb66fea24a64e55 100644
--- a/test/built-ins/Object/defineProperty/15.2.3.6-3-95-1.js
+++ b/test/built-ins/Object/defineProperty/15.2.3.6-3-95-1.js
@@ -7,12 +7,10 @@ description: >
     Object.defineProperty - 'Attributes' is an Error object that uses
     Object's [[Get]] method to access the 'configurable' property
     (8.10.5 step 4.a)
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
         var obj = {};
-        try {
+
             Error.prototype.configurable = true;
             var errObj = new Error();
 
@@ -24,9 +22,5 @@ function testcase() {
 
             var afterDeleted = obj.hasOwnProperty("property");
 
-            return beforeDeleted === true && afterDeleted === false;
-        } finally {
-            delete Error.prototype.configurable;
-        }
-    }
-runTestCase(testcase);
+assert.sameValue(beforeDeleted, true, 'beforeDeleted');
+assert.sameValue(afterDeleted, false, 'afterDeleted');
diff --git a/test/built-ins/Object/defineProperty/15.2.3.6-3-96-1.js b/test/built-ins/Object/defineProperty/15.2.3.6-3-96-1.js
index 743adb65077e850b8bd8ee18f257f0fff5359690..53a448dd06f4ae8ba7def4eb846c7c6329a34b0f 100644
--- a/test/built-ins/Object/defineProperty/15.2.3.6-3-96-1.js
+++ b/test/built-ins/Object/defineProperty/15.2.3.6-3-96-1.js
@@ -7,13 +7,10 @@ description: >
     Object.defineProperty - 'Attributes' is an Arguments object which
     implements its own [[Get]] method to access the 'configurable'
     property (8.10.5 step 4.a)
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
         var obj = {};
 
-        try {
             Object.prototype.configurable = true;
             var argObj = (function () { return arguments; })();
 
@@ -25,9 +22,5 @@ function testcase() {
 
             var afterDeleted = obj.hasOwnProperty("property");
 
-            return beforeDeleted === true && afterDeleted === false;
-        } finally {
-            delete Object.prototype.configurable;
-        }
-    }
-runTestCase(testcase);
+assert.sameValue(beforeDeleted, true, 'beforeDeleted');
+assert.sameValue(afterDeleted, false, 'afterDeleted');
diff --git a/test/built-ins/Object/defineProperty/15.2.3.6-3-98.js b/test/built-ins/Object/defineProperty/15.2.3.6-3-98.js
index 79c8a99e032a1ccb93f9c1e8c02ed68e6f37c4eb..1bc8fe2979974de479ccc4a222a068b5a1d71d36 100644
--- a/test/built-ins/Object/defineProperty/15.2.3.6-3-98.js
+++ b/test/built-ins/Object/defineProperty/15.2.3.6-3-98.js
@@ -7,15 +7,11 @@ description: >
     Object.defineProperty - 'Attributes' is the global object that
     uses Object's [[Get]] method to access the 'configurable' property
     (8.10.5 step 4.a)
-includes:
-    - runTestCase.js
-    - fnGlobalObject.js
+includes: [fnGlobalObject.js]
 ---*/
 
-function testcase() {
         var obj = {};
 
-        try {
             fnGlobalObject().configurable = true;
 
             Object.defineProperty(obj, "property", fnGlobalObject());
@@ -26,9 +22,5 @@ function testcase() {
 
             var afterDeleted = obj.hasOwnProperty("property");
 
-            return beforeDeleted === true && afterDeleted === false;
-        } finally {
-            delete fnGlobalObject().configurable;
-        }
-    }
-runTestCase(testcase);
+assert.sameValue(beforeDeleted, true, 'beforeDeleted');
+assert.sameValue(afterDeleted, false, 'afterDeleted');
diff --git a/test/built-ins/Object/defineProperty/15.2.3.6-4-117.js b/test/built-ins/Object/defineProperty/15.2.3.6-4-117.js
index f80cb57184bfaf257ffd5a0bc70c11289aa7750d..2fd599c0b34d4d15baa0fd940ed7d24d45156a5a 100644
--- a/test/built-ins/Object/defineProperty/15.2.3.6-4-117.js
+++ b/test/built-ins/Object/defineProperty/15.2.3.6-4-117.js
@@ -7,14 +7,12 @@ description: >
     Object.defineProperty - 'O' is an Array, test the length property
     of 'O' is own data property that overrides an inherited data
     property (15.4.5.1 step 1)
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
         var arrObj = [0, 1, 2];
         var arrProtoLen;
 
-        try {
+assert.throws(TypeError, function() {
             arrProtoLen = Array.prototype.length;
             Array.prototype.length = 0;
 
@@ -26,11 +24,6 @@ function testcase() {
             Object.defineProperty(arrObj, "length", {
                 value: 1
             });
-            return false;
-        } catch (e) {
-            return e instanceof TypeError && arrObj.length === 3 && Array.prototype.length === 0;
-        } finally {
-            Array.prototype.length = arrProtoLen;
-        }
-    }
-runTestCase(testcase);
+});
+assert.sameValue(arrObj.length, 3, 'arrObj.length');
+assert.sameValue(Array.prototype.length, 0, 'Array.prototype.length');
diff --git a/test/built-ins/Object/defineProperty/15.2.3.6-4-171.js b/test/built-ins/Object/defineProperty/15.2.3.6-4-171.js
index b3c686930a5efd0e6b6336b1a5aad40aa3104e9e..29cef1594f4317339b4b3e615925deccd1a2b6c6 100644
--- a/test/built-ins/Object/defineProperty/15.2.3.6-4-171.js
+++ b/test/built-ins/Object/defineProperty/15.2.3.6-4-171.js
@@ -9,20 +9,14 @@ description: >
     of  the length property, test the [[Configurable]] attribute of an
     inherited data property with large index named in 'O' can't stop
     deleting index named properties (15.4.5.1 step 3.l.ii)
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
-
         var arrObj = [0, 1];
-        try {
+
             Array.prototype[1] = 2; // Not setting the [[Configurable]] attribute of property "1" to false here, since Array.prototype is a global object, and non-configurbale property can't revert to configurable
             Object.defineProperty(arrObj, "length", {
                 value: 1
             });
-            return arrObj.length === 1 && !arrObj.hasOwnProperty("1");
-        } finally {
-            delete Array.prototype[1];
-        }
-    }
-runTestCase(testcase);
+
+assert.sameValue(arrObj.length, 1, 'arrObj.length');
+assert.sameValue(arrObj.hasOwnProperty("1"), false, 'arrObj.hasOwnProperty("1")');
diff --git a/test/built-ins/Object/defineProperty/15.2.3.6-4-172.js b/test/built-ins/Object/defineProperty/15.2.3.6-4-172.js
index 94ee183d5d6abbd91f8d7e141a377d5d810e8b39..11e3ff7ffdf985a9240b16e40d9d631a255f9c0c 100644
--- a/test/built-ins/Object/defineProperty/15.2.3.6-4-172.js
+++ b/test/built-ins/Object/defineProperty/15.2.3.6-4-172.js
@@ -10,13 +10,11 @@ description: >
     own data property with large index named in 'O' that overrides an
     inherited data property can stop deleting index named properties
     (15.4.5.1 step 3.l.ii)
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
-
         var arrObj = [0, 1];
-        try {
+
+assert.throws(TypeError, function() {
             Object.defineProperty(arrObj, "1", {
                 configurable: false
             });
@@ -25,11 +23,6 @@ function testcase() {
             Object.defineProperty(arrObj, "length", {
                 value: 1
             });
-            return false;
-        } catch (e) {
-            return e instanceof TypeError && arrObj.length === 2 && arrObj.hasOwnProperty("1"); 
-        } finally {
-            delete Array.prototype[1];
-        }
-    }
-runTestCase(testcase);
+});
+assert.sameValue(arrObj.length, 2, 'arrObj.length');
+assert(arrObj.hasOwnProperty("1"), 'arrObj.hasOwnProperty("1") !== true');
diff --git a/test/built-ins/Object/defineProperty/15.2.3.6-4-173.js b/test/built-ins/Object/defineProperty/15.2.3.6-4-173.js
index ed42fe5988311a597b37f5c8e8284e761147ca98..27a85d434a08575da78a637cf00a56c5dbc15b82 100644
--- a/test/built-ins/Object/defineProperty/15.2.3.6-4-173.js
+++ b/test/built-ins/Object/defineProperty/15.2.3.6-4-173.js
@@ -10,13 +10,11 @@ description: >
     own data property with large index named in 'O' that overrides an
     inherited accessor property can stop deleting index named
     properties (15.4.5.1 step 3.l.ii)
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
-
         var arrObj = [0, 1];
-        try {
+
+assert.throws(TypeError, function() {
             Object.defineProperty(arrObj, "1", {
                 configurable: false
             });
@@ -31,12 +29,6 @@ function testcase() {
             Object.defineProperty(arrObj, "length", {
                 value: 1
             });
-
-            return false;
-        } catch (e) {
-            return e instanceof TypeError && arrObj.length === 2 && arrObj.hasOwnProperty("1");
-        } finally {
-            delete Array.prototype[1];
-        }
-    }
-runTestCase(testcase);
+});
+assert.sameValue(arrObj.length, 2, 'arrObj.length');
+assert(arrObj.hasOwnProperty("1"), 'arrObj.hasOwnProperty("1") !== true');
diff --git a/test/built-ins/Object/defineProperty/15.2.3.6-4-175.js b/test/built-ins/Object/defineProperty/15.2.3.6-4-175.js
index 79b35f0d3d835d1b5c7e88f8d309830b3cd6ddf0..4e7d05cebd1656448078f0feeab70903ba5c2791 100644
--- a/test/built-ins/Object/defineProperty/15.2.3.6-4-175.js
+++ b/test/built-ins/Object/defineProperty/15.2.3.6-4-175.js
@@ -9,13 +9,10 @@ description: >
     of  the length property, test the [[Configurable]] attribute of an
     inherited accessor property with large index named in 'O' can't
     stop deleting index named properties (15.4.5.1 step 3.l.ii)
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
-
         var arrObj = [0, 1];
-        try {
+
             Object.defineProperty(Array.prototype, "1", {
                 get: function () {
                     return 1;
@@ -27,9 +24,5 @@ function testcase() {
                 value: 1
             });
 
-            return arrObj.length === 1 && !arrObj.hasOwnProperty("1");
-        } finally {
-            delete Array.prototype[1];
-        }
-    }
-runTestCase(testcase);
+assert.sameValue(arrObj.length, 1, 'arrObj.length');
+assert.sameValue(arrObj.hasOwnProperty("1"), false, 'arrObj.hasOwnProperty("1")');
diff --git a/test/built-ins/Object/defineProperty/15.2.3.6-4-176.js b/test/built-ins/Object/defineProperty/15.2.3.6-4-176.js
index 17dd6a3e4281df2abb8baeea1e531c4bec3b28a0..4d1d9ac03ef83948c0e1546fdbd06f7f656b690e 100644
--- a/test/built-ins/Object/defineProperty/15.2.3.6-4-176.js
+++ b/test/built-ins/Object/defineProperty/15.2.3.6-4-176.js
@@ -10,13 +10,11 @@ description: >
     own accessor property with large index named in 'O' that overrides
     an inherited data property can stop deleting index named
     properties (15.4.5.1 step 3.l.ii)
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
-
         var arrObj = [0, 1];
-        try {
+
+assert.throws(TypeError, function() {
             Object.defineProperty(arrObj, "1", {
                 get: function () {
                     return 2;
@@ -28,11 +26,6 @@ function testcase() {
             Object.defineProperty(arrObj, "length", {
                 value: 1
             });
-            return false;
-        } catch (e) {
-            return e instanceof TypeError && arrObj.length === 2 && arrObj.hasOwnProperty("1"); 
-        } finally {
-            delete Array.prototype[1];
-        }
-    }
-runTestCase(testcase);
+});
+assert.sameValue(arrObj.length, 2, 'arrObj.length');
+assert(arrObj.hasOwnProperty("1"), 'arrObj.hasOwnProperty("1") !== true');
diff --git a/test/built-ins/Object/defineProperty/15.2.3.6-4-177.js b/test/built-ins/Object/defineProperty/15.2.3.6-4-177.js
index f3cef92f5e0785154127efd197e678c8259bac0f..f9c666b271a47afb337292d1dbddf1960a192a82 100644
--- a/test/built-ins/Object/defineProperty/15.2.3.6-4-177.js
+++ b/test/built-ins/Object/defineProperty/15.2.3.6-4-177.js
@@ -10,13 +10,11 @@ description: >
     own accessor property with large index named in 'O' that overrides
     an inherited accessor property can stop deleting index named
     properties (15.4.5.1 step 3.l.ii)
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
-
         var arrObj = [0, 1];
-        try {
+
+assert.throws(TypeError, function() {
             Object.defineProperty(arrObj, "1", {
                 get: function () {
                     return 1;
@@ -34,11 +32,6 @@ function testcase() {
             Object.defineProperty(arrObj, "length", {
                 value: 1
             });
-            return false;
-        } catch (e) {
-            return e instanceof TypeError && arrObj.length === 2 && arrObj.hasOwnProperty("1"); 
-        } finally {
-            delete Array.prototype[1];
-        }
-    }
-runTestCase(testcase);
+});
+assert.sameValue(arrObj.length, 2, 'arrObj.length');
+assert(arrObj.hasOwnProperty("1"), 'arrObj.hasOwnProperty("1") !== true');
diff --git a/test/built-ins/Object/defineProperty/15.2.3.6-4-192.js b/test/built-ins/Object/defineProperty/15.2.3.6-4-192.js
index c99967e9f7ad9686fe6fdd8e147c0ad5ec1c3284..5e28dc2d39cd73aad44d8a4667493db6c55de828 100644
--- a/test/built-ins/Object/defineProperty/15.2.3.6-4-192.js
+++ b/test/built-ins/Object/defineProperty/15.2.3.6-4-192.js
@@ -8,17 +8,16 @@ description: >
     named property, 'name' is own data property that overrides an
     inherited data property, test TypeError is thrown on updating the
     [[Configurable]] attribute from false to true (15.4.5.1 step 4.c)
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
-        try {
+var arrObj = [];
+
+assert.throws(TypeError, function() {
             Object.defineProperty(Array.prototype, "0", {
                 value: 11,
                 configurable: true
             });
 
-            var arrObj = [];
             Object.defineProperty(arrObj, "0", {
                 value: 12,
                 configurable: false
@@ -27,11 +26,6 @@ function testcase() {
             Object.defineProperty(arrObj, "0", {
                 configurable: true
             });
-            return false;
-        } catch (e) {
-            return e instanceof TypeError && Array.prototype[0] === 11 && arrObj[0] === 12;
-        } finally {
-            delete Array.prototype[0];
-        }
-    }
-runTestCase(testcase);
+});
+assert.sameValue(Array.prototype[0], 11, 'Array.prototype[0]');
+assert.sameValue(arrObj[0], 12, 'arrObj[0]');
diff --git a/test/built-ins/Object/defineProperty/15.2.3.6-4-193.js b/test/built-ins/Object/defineProperty/15.2.3.6-4-193.js
index c7ea6830d76c374cd99bfcdf56791bc600284d95..03c38b4dba41b02b78e10e3501be26cf4281547a 100644
--- a/test/built-ins/Object/defineProperty/15.2.3.6-4-193.js
+++ b/test/built-ins/Object/defineProperty/15.2.3.6-4-193.js
@@ -10,11 +10,11 @@ description: >
     the [[Configurable]] attribute to true and value of
     [[Configurable]] attribute of original is false  (15.4.5.1 step
     4.c)
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
-        try {
+var arrObj = [];
+
+assert.throws(TypeError, function() {
             Object.defineProperty(Array.prototype, "0", {
                 get: function () {
                     return 11;
@@ -22,7 +22,6 @@ function testcase() {
                 configurable: true
             });
 
-            var arrObj = [];
             Object.defineProperty(arrObj, "0", {
                 value: 12,
                 configurable: false
@@ -31,11 +30,6 @@ function testcase() {
             Object.defineProperty(arrObj, "0", {
                 configurable: true
             });
-            return false;
-        } catch (e) {
-            return e instanceof TypeError && Array.prototype[0] === 11 && arrObj[0] === 12;
-        } finally {
-            delete Array.prototype[0];
-        }
-    }
-runTestCase(testcase);
+});
+assert.sameValue(Array.prototype[0], 11, 'Array.prototype[0]');
+assert.sameValue(arrObj[0], 12, 'arrObj[0]');
diff --git a/test/built-ins/Object/defineProperty/15.2.3.6-4-196.js b/test/built-ins/Object/defineProperty/15.2.3.6-4-196.js
index f6ee1a4cc06e5e469b897761baad33154366ab41..7ddb2e1dd063a9202e0ac58fffb16e7caba30872 100644
--- a/test/built-ins/Object/defineProperty/15.2.3.6-4-196.js
+++ b/test/built-ins/Object/defineProperty/15.2.3.6-4-196.js
@@ -7,11 +7,10 @@ description: >
     Object.defineProperty - 'O' is an Array, 'name' is an array index
     named property, 'name' is own accessor property that overrides an
     inherited data property (15.4.5.1 step 4.c)
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
-        try {
+
+assert.throws(TypeError, function() {
             Object.defineProperty(Array.prototype, "0", {
                 value: 11,
                 configurable: true
@@ -26,11 +25,4 @@ function testcase() {
             Object.defineProperty(arrObj, "0", {
                 configurable: true
             });
-            return false;
-        } catch (e) {
-            return e instanceof TypeError;
-        } finally {
-            delete Array.prototype[0];
-        }
-    }
-runTestCase(testcase);
+});
diff --git a/test/built-ins/Object/defineProperty/15.2.3.6-4-197.js b/test/built-ins/Object/defineProperty/15.2.3.6-4-197.js
index 0dfdf81c90c36a3b854b6457047bf5cd5cde8aa5..4fc4f1e838e784c923914243f0141cca0cc706b3 100644
--- a/test/built-ins/Object/defineProperty/15.2.3.6-4-197.js
+++ b/test/built-ins/Object/defineProperty/15.2.3.6-4-197.js
@@ -7,11 +7,10 @@ description: >
     Object.defineProperty - 'O' is an Array, 'name' is an array index
     named property, 'name' is own accessor property that overrides an
     inherited accessor property (15.4.5.1 step 4.c)
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
-        try {
+
+assert.throws(TypeError, function() {
             Object.defineProperty(Array.prototype, "0", {
                 get: function () { },
                 configurable: true
@@ -26,11 +25,4 @@ function testcase() {
             Object.defineProperty(arrObj, "0", {
                 configurable: true
             });
-            return false;
-        } catch (e) {
-            return e instanceof TypeError;
-        } finally {
-            delete Array.prototype[0];
-        }
-    }
-runTestCase(testcase);
+});
diff --git a/test/built-ins/Object/defineProperty/15.2.3.6-4-354-8.js b/test/built-ins/Object/defineProperty/15.2.3.6-4-354-8.js
index fd80a39e1907d66f41c80ab99d8bed1c675c6779..af11b74339ce9ab1b77d21b5804dfbfd37023260 100644
--- a/test/built-ins/Object/defineProperty/15.2.3.6-4-354-8.js
+++ b/test/built-ins/Object/defineProperty/15.2.3.6-4-354-8.js
@@ -13,7 +13,7 @@ includes:
 ---*/
 
 var obj = fnGlobalObject();
-try {
+
     Object.defineProperty(obj, "prop", {
         value: 2010,
         writable: false,
@@ -24,7 +24,3 @@ try {
     assert.sameValue(obj.prop, 2010);
     verifyNotWritable(obj, "prop");
     assert.sameValue(obj.prop, 2010);
-} finally {
-    delete obj.prop;
-}
-
diff --git a/test/built-ins/Object/defineProperty/15.2.3.6-4-360-3.js b/test/built-ins/Object/defineProperty/15.2.3.6-4-360-3.js
index 1aa14ab705bd45791759558c4d2cc2b7bfb3220c..b1cdb7890ac9f04dd59ff402d0947b316acc9b5f 100644
--- a/test/built-ins/Object/defineProperty/15.2.3.6-4-360-3.js
+++ b/test/built-ins/Object/defineProperty/15.2.3.6-4-360-3.js
@@ -14,7 +14,7 @@ includes:
 ---*/
 
 var obj = fnGlobalObject();
-try {
+
     Object.defineProperty(obj, "prop", {
         value: 2010,
         writable: false,
@@ -38,6 +38,3 @@ try {
     assert.sameValue(obj.prop, 20);
     assert.sameValue(typeof desc2.set, "undefined");
     assert.sameValue(desc2.get, getFunc);
-} finally {
-    delete obj.prop;
-}
diff --git a/test/built-ins/Object/defineProperty/15.2.3.6-4-402.js b/test/built-ins/Object/defineProperty/15.2.3.6-4-402.js
index 976842919fd860be4f0aadef172859fce5039131..1ef35f2bc916e1d395003503a392e92f4065c4a7 100644
--- a/test/built-ins/Object/defineProperty/15.2.3.6-4-402.js
+++ b/test/built-ins/Object/defineProperty/15.2.3.6-4-402.js
@@ -6,11 +6,8 @@ es5id: 15.2.3.6-4-402
 description: >
     ES5 Attributes - [[Value]] attribute of inherited property of
     [[Prototype]] internal property is correct (String instance)
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
-        try {
             Object.defineProperty(String.prototype, "prop", {
                 value: 1001,
                 writable: true,
@@ -19,9 +16,5 @@ function testcase() {
             });
             var strObj = new String();
 
-            return !strObj.hasOwnProperty("prop") && strObj.prop === 1001;
-        } finally {
-            delete String.prototype.prop;
-        }
-    }
-runTestCase(testcase);
+assert.sameValue(strObj.hasOwnProperty("prop"), false, 'strObj.hasOwnProperty("prop")');
+assert.sameValue(strObj.prop, 1001, 'strObj.prop');
diff --git a/test/built-ins/Object/defineProperty/15.2.3.6-4-403.js b/test/built-ins/Object/defineProperty/15.2.3.6-4-403.js
index c19ec0616250fc2920f6d9cfd0cd8d22679a3d40..989f5d5e99e52a3b343640feee5e2b2c59c7bccf 100644
--- a/test/built-ins/Object/defineProperty/15.2.3.6-4-403.js
+++ b/test/built-ins/Object/defineProperty/15.2.3.6-4-403.js
@@ -7,11 +7,8 @@ description: >
     ES5 Attributes - Successfully add a property to an object when the
     object's prototype has a property with same name and [[Writable]]
     attribute is set to true (Array instance)
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
-        try {
             Object.defineProperty(Array.prototype, "prop", {
                 value: 1001,
                 writable: true,
@@ -21,9 +18,5 @@ function testcase() {
             var arrObj = [];
             arrObj.prop = 1002;
 
-            return arrObj.hasOwnProperty("prop") && arrObj.prop === 1002;
-        } finally {
-            delete Array.prototype.prop;
-        }
-    }
-runTestCase(testcase);
+assert(arrObj.hasOwnProperty("prop"), 'arrObj.hasOwnProperty("prop") !== true');
+assert.sameValue(arrObj.prop, 1002, 'arrObj.prop');
diff --git a/test/built-ins/Object/defineProperty/15.2.3.6-4-404.js b/test/built-ins/Object/defineProperty/15.2.3.6-4-404.js
index c65cd138d341603748f04df37e1b3b6c0eb6de86..5cd57989220de8431690bd9b32fe85a504faebb4 100644
--- a/test/built-ins/Object/defineProperty/15.2.3.6-4-404.js
+++ b/test/built-ins/Object/defineProperty/15.2.3.6-4-404.js
@@ -6,11 +6,8 @@ es5id: 15.2.3.6-4-404
 description: >
     ES5 Attributes - Inherited property whose [[Enumerable]] attribute
     is set to true is enumerable (Boolean instance)
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
-        try {
             Object.defineProperty(Boolean.prototype, "prop", {
                 value: 1001,
                 writable: true,
@@ -26,9 +23,5 @@ function testcase() {
                 }
             }
 
-            return !boolObj.hasOwnProperty("prop") && verifyEnumerable;
-        } finally {
-            delete Boolean.prototype.prop;
-        }
-    }
-runTestCase(testcase);
+assert.sameValue(boolObj.hasOwnProperty("prop"), false, 'boolObj.hasOwnProperty("prop")');
+assert(verifyEnumerable, 'verifyEnumerable !== true');
diff --git a/test/built-ins/Object/defineProperty/15.2.3.6-4-405.js b/test/built-ins/Object/defineProperty/15.2.3.6-4-405.js
index 7ff234090abcd861b54f85e27433b5d07ffd8664..3f7a504386cebf5281e181ab687905d25d56d7e4 100644
--- a/test/built-ins/Object/defineProperty/15.2.3.6-4-405.js
+++ b/test/built-ins/Object/defineProperty/15.2.3.6-4-405.js
@@ -10,7 +10,6 @@ description: >
 includes: [propertyHelper.js]
 ---*/
 
-try {
     Object.defineProperty(Number.prototype, "prop", {
         value: 1001,
         writable: false,
@@ -22,7 +21,3 @@ try {
 
     assert(!numObj.hasOwnProperty("prop"));
     verifyNotWritable(numObj, "prop", "noCheckOwnProp");
-} finally {
-    delete Number.prototype.prop;
-}
-
diff --git a/test/built-ins/Object/defineProperty/15.2.3.6-4-406.js b/test/built-ins/Object/defineProperty/15.2.3.6-4-406.js
index cd6ece4e6562bd05051bf9d985810d4b58cf37c0..25ede11d5cd33adcbc6f71556e71a34f434807bd 100644
--- a/test/built-ins/Object/defineProperty/15.2.3.6-4-406.js
+++ b/test/built-ins/Object/defineProperty/15.2.3.6-4-406.js
@@ -6,11 +6,8 @@ es5id: 15.2.3.6-4-406
 description: >
     ES5 Attributes - Inherited property whose [[Enumerable]] attribute
     is set to false is non-enumerable (Function instance)
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
-        try {
             Object.defineProperty(Function.prototype, "prop", {
                 value: 1001,
                 writable: false,
@@ -26,9 +23,5 @@ function testcase() {
                 }
             }
 
-            return !funObj.hasOwnProperty("prop") && !verifyEnumerable;
-        } finally {
-            delete Function.prototype.prop;
-        }
-    }
-runTestCase(testcase);
+assert.sameValue(funObj.hasOwnProperty("prop"), false, 'funObj.hasOwnProperty("prop")');
+assert.sameValue(verifyEnumerable, false, 'verifyEnumerable');
diff --git a/test/built-ins/Object/defineProperty/15.2.3.6-4-407.js b/test/built-ins/Object/defineProperty/15.2.3.6-4-407.js
index 4e4f2555b802362944ad8f306818a2004382253c..eeabd495e88b18839eb86e95db3abc34dfab5e75 100644
--- a/test/built-ins/Object/defineProperty/15.2.3.6-4-407.js
+++ b/test/built-ins/Object/defineProperty/15.2.3.6-4-407.js
@@ -6,11 +6,8 @@ es5id: 15.2.3.6-4-407
 description: >
     ES5 Attributes - [[Value]] attribute of inherited property of
     [[Prototype]] internal property is correct (Error Instance)
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
-        try {
             Object.defineProperty(Error.prototype, "prop", {
                 value: 1001,
                 writable: true,
@@ -19,9 +16,5 @@ function testcase() {
             });
             var errObj = new Error();
 
-            return !errObj.hasOwnProperty("prop") && errObj.prop === 1001;
-        } finally {
-            delete Error.prototype.prop;
-        }
-    }
-runTestCase(testcase);
+assert.sameValue(errObj.hasOwnProperty("prop"), false, 'errObj.hasOwnProperty("prop")');
+assert.sameValue(errObj.prop, 1001, 'errObj.prop');
diff --git a/test/built-ins/Object/defineProperty/15.2.3.6-4-408.js b/test/built-ins/Object/defineProperty/15.2.3.6-4-408.js
index f25895f3207032f427bcab6e94dced4c5f710d28..c1223a55c360aad0541d353c7a4e31d78a1048ad 100644
--- a/test/built-ins/Object/defineProperty/15.2.3.6-4-408.js
+++ b/test/built-ins/Object/defineProperty/15.2.3.6-4-408.js
@@ -7,11 +7,8 @@ description: >
     ES5 Attributes - Successfully add a property to an object when the
     object's prototype has a property with same name and [[Writable]]
     attribute is set to true (Date instance)
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
-        try {
             Object.defineProperty(Date.prototype, "prop", {
                 value: 1001,
                 writable: true,
@@ -21,9 +18,5 @@ function testcase() {
             var dateObj = new Date();
             dateObj.prop = 1002;
 
-            return dateObj.hasOwnProperty("prop") && dateObj.prop === 1002;
-        } finally {
-            delete Date.prototype.prop;
-        }
-    }
-runTestCase(testcase);
+assert(dateObj.hasOwnProperty("prop"), 'dateObj.hasOwnProperty("prop") !== true');
+assert.sameValue(dateObj.prop, 1002, 'dateObj.prop');
diff --git a/test/built-ins/Object/defineProperty/15.2.3.6-4-409.js b/test/built-ins/Object/defineProperty/15.2.3.6-4-409.js
index 2b48ac1e03bfb2cfc1089de6c4aceedd43aa7c51..8dd96da0bcdc5c5467c349762e88fa7019f7f4f4 100644
--- a/test/built-ins/Object/defineProperty/15.2.3.6-4-409.js
+++ b/test/built-ins/Object/defineProperty/15.2.3.6-4-409.js
@@ -6,11 +6,8 @@ es5id: 15.2.3.6-4-409
 description: >
     ES5 Attributes - Inherited property whose [[Enumerable]] attribute
     is set to false is enumerable (RegExp instance)
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
-        try {
             Object.defineProperty(RegExp.prototype, "prop", {
                 value: 1001,
                 writable: true,
@@ -26,9 +23,5 @@ function testcase() {
                 }
             }
 
-            return !regObj.hasOwnProperty("prop") && verifyEnumerable;
-        } finally {
-            delete RegExp.prototype.prop;
-        }
-    }
-runTestCase(testcase);
+assert.sameValue(regObj.hasOwnProperty("prop"), false, 'regObj.hasOwnProperty("prop")');
+assert(verifyEnumerable, 'verifyEnumerable !== true');
diff --git a/test/built-ins/Object/defineProperty/15.2.3.6-4-410.js b/test/built-ins/Object/defineProperty/15.2.3.6-4-410.js
index be87243a76ec84767cde1e3e46d541ccc548f281..7c7a842561995666e5af4033670752e91881fbc1 100644
--- a/test/built-ins/Object/defineProperty/15.2.3.6-4-410.js
+++ b/test/built-ins/Object/defineProperty/15.2.3.6-4-410.js
@@ -10,7 +10,6 @@ description: >
 includes: [propertyHelper.js]
 ---*/
 
-try {
     Object.defineProperty(Object.prototype, "prop", {
         value: 1001,
         writable: false,
@@ -21,8 +20,3 @@ try {
     assert(!JSON.hasOwnProperty("prop"));
     verifyNotWritable(JSON, "prop", "noCheckOwnProp");
     assert.sameValue(JSON.prop, 1001);
-
-} finally {
-    delete Object.prototype.prop;
-}
-
diff --git a/test/built-ins/Object/defineProperty/15.2.3.6-4-411.js b/test/built-ins/Object/defineProperty/15.2.3.6-4-411.js
index c22e5c0f36054136caa52adf89e07e324a526796..b8d82ce406c0b1a3be83bbfc6458f509ce703583 100644
--- a/test/built-ins/Object/defineProperty/15.2.3.6-4-411.js
+++ b/test/built-ins/Object/defineProperty/15.2.3.6-4-411.js
@@ -6,11 +6,8 @@ es5id: 15.2.3.6-4-411
 description: >
     ES5 Attributes - Inherited property whose [[Enumerable]] attribute
     is set to false is non-enumerable (Math)
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
-        try {
             Object.defineProperty(Object.prototype, "prop", {
                 value: 1001,
                 writable: false,
@@ -25,9 +22,5 @@ function testcase() {
                 }
             }
 
-            return !Math.hasOwnProperty("prop") && !verifyEnumerable;
-        } finally {
-            delete Object.prototype.prop;
-        }
-    }
-runTestCase(testcase);
+assert.sameValue(Math.hasOwnProperty("prop"), false, 'Math.hasOwnProperty("prop")');
+assert.sameValue(verifyEnumerable, false, 'verifyEnumerable');
diff --git a/test/built-ins/Object/defineProperty/15.2.3.6-4-417.js b/test/built-ins/Object/defineProperty/15.2.3.6-4-417.js
index 15fc5c5a5fb2b1dbba2c59346c97dec945f8da10..6df596d40f50f4176d5d7cebeae1da0fb1beb56f 100644
--- a/test/built-ins/Object/defineProperty/15.2.3.6-4-417.js
+++ b/test/built-ins/Object/defineProperty/15.2.3.6-4-417.js
@@ -6,12 +6,10 @@ es5id: 15.2.3.6-4-417
 description: >
     ES5 Attributes - [[Value]] attribute of inherited property of
     [[Prototype]] internal property is correct(Function.prototype.bind)
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
         var foo = function () { };
-        try {
+
             Object.defineProperty(Function.prototype, "prop", {
                 value: 1001,
                 writable: true,
@@ -21,9 +19,5 @@ function testcase() {
 
             var obj = foo.bind({});
 
-            return !obj.hasOwnProperty("prop") && obj.prop === 1001;
-        } finally {
-            delete Function.prototype.prop;
-        }
-    }
-runTestCase(testcase);
+assert.sameValue(obj.hasOwnProperty("prop"), false, 'obj.hasOwnProperty("prop")');
+assert.sameValue(obj.prop, 1001, 'obj.prop');
diff --git a/test/built-ins/Object/defineProperty/15.2.3.6-4-418.js b/test/built-ins/Object/defineProperty/15.2.3.6-4-418.js
index 4e04e0352341731ecc1f20f3e08fed7069027576..d2c0ab532f5aa24638838dcab1197776fdcc6394 100644
--- a/test/built-ins/Object/defineProperty/15.2.3.6-4-418.js
+++ b/test/built-ins/Object/defineProperty/15.2.3.6-4-418.js
@@ -7,12 +7,10 @@ description: >
     ES5 Attributes - Successfully add a property to an object when the
     object's prototype has a property with the same name and
     [[Writable]] set to true (Function.prototype.bind)
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
         var foo = function () { };
-        try {
+
             Object.defineProperty(Function.prototype, "prop", {
                 value: 1001,
                 writable: true,
@@ -23,9 +21,5 @@ function testcase() {
             var obj = foo.bind({});
             obj.prop = 1002;
 
-            return obj.hasOwnProperty("prop") && obj.prop === 1002;
-        } finally {
-            delete Function.prototype.prop;
-        }
-    }
-runTestCase(testcase);
+assert(obj.hasOwnProperty("prop"), 'obj.hasOwnProperty("prop") !== true');
+assert.sameValue(obj.prop, 1002, 'obj.prop');
diff --git a/test/built-ins/Object/defineProperty/15.2.3.6-4-419.js b/test/built-ins/Object/defineProperty/15.2.3.6-4-419.js
index 5a707bcc0a146e965c8981a29a55caf12613d165..e175d090fabfeabd7731fa1ad45cc8b293ca4745 100644
--- a/test/built-ins/Object/defineProperty/15.2.3.6-4-419.js
+++ b/test/built-ins/Object/defineProperty/15.2.3.6-4-419.js
@@ -6,12 +6,10 @@ es5id: 15.2.3.6-4-419
 description: >
     ES5 Attributes - Inherited property whose [[Enumerable]] attribute
     is set to true is enumerable (Function.prototype.bind)
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
         var foo = function () { };
-        try {
+
             Object.defineProperty(Function.prototype, "prop", {
                 value: 1001,
                 writable: true,
@@ -27,9 +25,5 @@ function testcase() {
                 }
             }
 
-            return !obj.hasOwnProperty("prop") && verifyEnumerable;
-        } finally {
-            delete Function.prototype.prop;
-        }
-    }
-runTestCase(testcase);
+assert.sameValue(obj.hasOwnProperty("prop"), false, 'obj.hasOwnProperty("prop")');
+assert(verifyEnumerable, 'verifyEnumerable !== true');
diff --git a/test/built-ins/Object/defineProperty/15.2.3.6-4-420.js b/test/built-ins/Object/defineProperty/15.2.3.6-4-420.js
index 9c192fd4b558786c4f999739aff5aa224ac37a37..f403f9b34d2867a9b9109818efedb32025186763 100644
--- a/test/built-ins/Object/defineProperty/15.2.3.6-4-420.js
+++ b/test/built-ins/Object/defineProperty/15.2.3.6-4-420.js
@@ -11,7 +11,7 @@ includes: [propertyHelper.js]
 ---*/
 
 var foo = function () { };
-try {
+
     Object.defineProperty(Function.prototype, "prop", {
         value: 1001,
         writable: false,
@@ -22,7 +22,3 @@ try {
     var obj = foo.bind({});
     assert(!obj.hasOwnProperty("prop"));
     verifyNotWritable(foo, "prop", "noCheckOwnProp");
-} finally {
-    delete Function.prototype.prop;
-}
-
diff --git a/test/built-ins/Object/defineProperty/15.2.3.6-4-421.js b/test/built-ins/Object/defineProperty/15.2.3.6-4-421.js
index adb3af77332054f32bc840ea7ae12a7c6867361f..120ffe0fd40a997f3f7e9cb29ce2b9b69dbca1d9 100644
--- a/test/built-ins/Object/defineProperty/15.2.3.6-4-421.js
+++ b/test/built-ins/Object/defineProperty/15.2.3.6-4-421.js
@@ -6,12 +6,10 @@ es5id: 15.2.3.6-4-421
 description: >
     ES5 Attributes - Inherited property whose [[Enumerable]] attribute
     is set to false is non-enumerable (Function.prototype.bind)
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
         var foo = function () { };
-        try {
+
             Object.defineProperty(Function.prototype, "prop", {
                 value: 1001,
                 writable: false,
@@ -27,9 +25,5 @@ function testcase() {
                 }
             }
 
-            return !obj.hasOwnProperty("prop") && !verifyEnumerable;
-        } finally {
-            delete Function.prototype.prop;
-        }
-    }
-runTestCase(testcase);
+assert.sameValue(obj.hasOwnProperty("prop"), false, 'obj.hasOwnProperty("prop")');
+assert.sameValue(verifyEnumerable, false, 'verifyEnumerable');
diff --git a/test/built-ins/Object/defineProperty/15.2.3.6-4-531-17.js b/test/built-ins/Object/defineProperty/15.2.3.6-4-531-17.js
index 84835f3ca294d33140ad4e5adcb04b533a0bedde..84b8696dc55911818d2ed21132f630485dc04a86 100644
--- a/test/built-ins/Object/defineProperty/15.2.3.6-4-531-17.js
+++ b/test/built-ins/Object/defineProperty/15.2.3.6-4-531-17.js
@@ -7,14 +7,11 @@ description: >
     ES5 Attributes - Updating an indexed accessor property 'P' using
     simple assignment is successful, 'O' is the global object (8.12.5
     step 5.b)
-includes:
-    - runTestCase.js
-    - fnGlobalObject.js
+includes: [fnGlobalObject.js]
 ---*/
 
-function testcase() {
         var obj = fnGlobalObject();
-        try {
+
             obj.verifySetFunc = "data";
             var setFunc = function (value) {
                 obj.verifySetFunc = value;
@@ -34,10 +31,6 @@ function testcase() {
             var propertyDefineCorrect = obj.hasOwnProperty("0");
             var desc = Object.getOwnPropertyDescriptor(obj, "0");
 
-            return propertyDefineCorrect && desc.set === setFunc && obj[0] === "overrideData";
-        } finally {
-            delete obj[0];
-            delete obj.verifySetFunc;
-        }
-    }
-runTestCase(testcase);
+assert(propertyDefineCorrect, 'propertyDefineCorrect !== true');
+assert.sameValue(desc.set, setFunc, 'desc.set');
+assert.sameValue(obj[0], "overrideData", 'obj[0]');
diff --git a/test/built-ins/Object/defineProperty/15.2.3.6-4-531-8.js b/test/built-ins/Object/defineProperty/15.2.3.6-4-531-8.js
index a39afa763d9901d7e5d64b853a5ad61697ad4087..610532c9cda126abe22a5b9f48aae04b1d9e181a 100644
--- a/test/built-ins/Object/defineProperty/15.2.3.6-4-531-8.js
+++ b/test/built-ins/Object/defineProperty/15.2.3.6-4-531-8.js
@@ -13,7 +13,7 @@ includes:
 ---*/
 
 var obj = fnGlobalObject();
-try {
+
     obj.verifySetFunc = "data";
     var getFunc = function () {
         return obj.verifySetFunc;
@@ -31,7 +31,3 @@ try {
     verifyNotWritable(obj, "prop");
     assert.sameValue(typeof desc.set, "undefined");
     assert.sameValue(obj.prop, "data");
-} finally {
-    delete obj.prop;
-    delete obj.verifySetFunc;
-}
diff --git a/test/built-ins/Object/defineProperty/15.2.3.6-4-578.js b/test/built-ins/Object/defineProperty/15.2.3.6-4-578.js
index f90c6ff42b7f722d25daa58273cd4fb0c4c5fefd..eee9a7cfefec9d7f837910ac943b3c2a49b3b2c4 100644
--- a/test/built-ins/Object/defineProperty/15.2.3.6-4-578.js
+++ b/test/built-ins/Object/defineProperty/15.2.3.6-4-578.js
@@ -6,12 +6,10 @@ es5id: 15.2.3.6-4-578
 description: >
     ES5 Attributes - [[Get]] field of inherited property of
     [[Prototype]] internal property is correct (String instance)
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
         var data = "data";
-        try {
+
             Object.defineProperty(String.prototype, "prop", {
                 get: function () {
                     return data;
@@ -24,9 +22,5 @@ function testcase() {
             });
             var strObj = new String();
 
-            return !strObj.hasOwnProperty("prop") && strObj.prop === "data";
-        } finally {
-            delete String.prototype.prop;
-        }
-    }
-runTestCase(testcase);
+assert.sameValue(strObj.hasOwnProperty("prop"), false, 'strObj.hasOwnProperty("prop")');
+assert.sameValue(strObj.prop, "data", 'strObj.prop');
diff --git a/test/built-ins/Object/defineProperty/15.2.3.6-4-579.js b/test/built-ins/Object/defineProperty/15.2.3.6-4-579.js
index dab54da1302d28d2295414c7e6634811dfb05d58..e910f3335826df7ab336615a031ed563b1da8717 100644
--- a/test/built-ins/Object/defineProperty/15.2.3.6-4-579.js
+++ b/test/built-ins/Object/defineProperty/15.2.3.6-4-579.js
@@ -6,12 +6,10 @@ es5id: 15.2.3.6-4-579
 description: >
     ES5 Attributes - Success to add property into object (Array
     instance)
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
         var data = "data";
-        try {
+
             Object.defineProperty(Array.prototype, "prop", {
                 get: function () {
                     return data;
@@ -25,9 +23,6 @@ function testcase() {
             var arrObj = [];
             arrObj.prop = "myOwnProperty";
 
-            return !arrObj.hasOwnProperty("prop") && arrObj.prop === "myOwnProperty" && data === "myOwnProperty";
-        } finally {
-            delete Array.prototype.prop;
-        }
-    }
-runTestCase(testcase);
+assert.sameValue(arrObj.hasOwnProperty("prop"), false, 'arrObj.hasOwnProperty("prop")');
+assert.sameValue(arrObj.prop, "myOwnProperty", 'arrObj.prop');
+assert.sameValue(data, "myOwnProperty", 'data');
diff --git a/test/built-ins/Object/defineProperty/15.2.3.6-4-580.js b/test/built-ins/Object/defineProperty/15.2.3.6-4-580.js
index 8fd5bd6b1ddd37a7ea20f4445b336f1f2413ce0f..d4c99db0701837005ade6b797512d6a6ba300c5d 100644
--- a/test/built-ins/Object/defineProperty/15.2.3.6-4-580.js
+++ b/test/built-ins/Object/defineProperty/15.2.3.6-4-580.js
@@ -6,12 +6,10 @@ es5id: 15.2.3.6-4-580
 description: >
     ES5 Attributes - Inherited property is enumerable (Boolean
     instance)
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
         var data = "data";
-        try {
+
             Object.defineProperty(Boolean.prototype, "prop", {
                 get: function () {
                     return data;
@@ -30,9 +28,5 @@ function testcase() {
                 }
             }
 
-            return !boolObj.hasOwnProperty("prop") && verifyEnumerable;
-        } finally {
-            delete Boolean.prototype.prop;
-        }
-    }
-runTestCase(testcase);
+assert.sameValue(boolObj.hasOwnProperty("prop"), false, 'boolObj.hasOwnProperty("prop")');
+assert(verifyEnumerable, 'verifyEnumerable !== true');
diff --git a/test/built-ins/Object/defineProperty/15.2.3.6-4-581.js b/test/built-ins/Object/defineProperty/15.2.3.6-4-581.js
index 478e76009eed0c359b6c5546269941af8cc0a58f..2931f9c8f4a6e27207a6320357d51bc302f6b661 100644
--- a/test/built-ins/Object/defineProperty/15.2.3.6-4-581.js
+++ b/test/built-ins/Object/defineProperty/15.2.3.6-4-581.js
@@ -8,7 +8,7 @@ includes: [propertyHelper.js]
 ---*/
 
 var data = "data";
-try {
+
     Object.defineProperty(Number.prototype, "prop", {
         get: function () {
             return data;
@@ -23,6 +23,3 @@ try {
     assert(!numObj.hasOwnProperty("prop"));
     assert.sameValue(numObj.prop, "data");
     assert.sameValue(data, "data");
-} finally {
-    delete Number.prototype.prop;
-}
diff --git a/test/built-ins/Object/defineProperty/15.2.3.6-4-582.js b/test/built-ins/Object/defineProperty/15.2.3.6-4-582.js
index ee7a5d0c9f16feb61efb585a299ee4973a5318f7..7895b7455278e91665f9bcfe9e8c3f88ae1035c6 100644
--- a/test/built-ins/Object/defineProperty/15.2.3.6-4-582.js
+++ b/test/built-ins/Object/defineProperty/15.2.3.6-4-582.js
@@ -6,12 +6,10 @@ es5id: 15.2.3.6-4-582
 description: >
     ES5 Attributes - Inherited property is non-enumerable (Function
     instance)
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
         var data = "data";
-        try {
+
             Object.defineProperty(Function.prototype, "prop", {
                 get: function () {
                     return data;
@@ -27,9 +25,5 @@ function testcase() {
                 }
             }
 
-            return !funObj.hasOwnProperty("prop") && !verifyEnumerable;
-        } finally {
-            delete Function.prototype.prop;
-        }
-    }
-runTestCase(testcase);
+assert.sameValue(funObj.hasOwnProperty("prop"), false, 'funObj.hasOwnProperty("prop")');
+assert.sameValue(verifyEnumerable, false, 'verifyEnumerable');
diff --git a/test/built-ins/Object/defineProperty/15.2.3.6-4-583.js b/test/built-ins/Object/defineProperty/15.2.3.6-4-583.js
index 4c765944c6057cadff47b00e9c830fda5c5e24ca..97b7352fde3e0b3be2853db05232e44ca2a7a679 100644
--- a/test/built-ins/Object/defineProperty/15.2.3.6-4-583.js
+++ b/test/built-ins/Object/defineProperty/15.2.3.6-4-583.js
@@ -6,12 +6,10 @@ es5id: 15.2.3.6-4-583
 description: >
     ES5 Attributes - [[Get]] field of inherited property of
     [[Prototype]] internal property is correct (Error Instance)
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
         var data = "data";
-        try {
+
             Object.defineProperty(Error.prototype, "prop", {
                 get: function () {
                     return data;
@@ -24,9 +22,5 @@ function testcase() {
             });
             var errObj = new Error();
 
-            return !errObj.hasOwnProperty("prop") && errObj.prop === "data";
-        } finally {
-            delete Error.prototype.prop;
-        }
-    }
-runTestCase(testcase);
+assert.sameValue(errObj.hasOwnProperty("prop"), false, 'errObj.hasOwnProperty("prop")');
+assert.sameValue(errObj.prop, "data", 'errObj.prop');
diff --git a/test/built-ins/Object/defineProperty/15.2.3.6-4-584.js b/test/built-ins/Object/defineProperty/15.2.3.6-4-584.js
index 7b8241f0f8c863e88680c788d76fc32a14186648..716431a7bbf24c9744a348762f59a2c3af954f0b 100644
--- a/test/built-ins/Object/defineProperty/15.2.3.6-4-584.js
+++ b/test/built-ins/Object/defineProperty/15.2.3.6-4-584.js
@@ -4,12 +4,10 @@
 /*---
 es5id: 15.2.3.6-4-584
 description: ES5 Attributes - Failed to add property into object (Date instance)
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
         var data = "data";
-        try {
+
             Object.defineProperty(Date.prototype, "prop", {
                 get: function () {
                     return data;
@@ -23,9 +21,6 @@ function testcase() {
             var dateObj = new Date();
             dateObj.prop = "myOwnProperty";
 
-            return !dateObj.hasOwnProperty("prop") && dateObj.prop === "myOwnProperty" && data === "myOwnProperty";
-        } finally {
-            delete Date.prototype.prop;
-        }
-    }
-runTestCase(testcase);
+assert.sameValue(dateObj.hasOwnProperty("prop"), false, 'dateObj.hasOwnProperty("prop")');
+assert.sameValue(dateObj.prop, "myOwnProperty", 'dateObj.prop');
+assert.sameValue(data, "myOwnProperty", 'data');
diff --git a/test/built-ins/Object/defineProperty/15.2.3.6-4-585.js b/test/built-ins/Object/defineProperty/15.2.3.6-4-585.js
index 4b06990223528bd0ce2ff3b270a24d20fe75bf6f..b58e5941696fe9532c205e04f2fcbba0e53ff5a8 100644
--- a/test/built-ins/Object/defineProperty/15.2.3.6-4-585.js
+++ b/test/built-ins/Object/defineProperty/15.2.3.6-4-585.js
@@ -4,12 +4,10 @@
 /*---
 es5id: 15.2.3.6-4-585
 description: ES5 Attributes - Inherited property is enumerable (RegExp instance)
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
         var data = "data";
-        try {
+
             Object.defineProperty(RegExp.prototype, "prop", {
                 get: function () {
                     return data;
@@ -28,9 +26,5 @@ function testcase() {
                 }
             }
 
-            return !regObj.hasOwnProperty("prop") && verifyEnumerable;
-        } finally {
-            delete RegExp.prototype.prop;
-        }
-    }
-runTestCase(testcase);
+assert.sameValue(regObj.hasOwnProperty("prop"), false, 'regObj.hasOwnProperty("prop")');
+assert(verifyEnumerable, 'verifyEnumerable !== true');
diff --git a/test/built-ins/Object/defineProperty/15.2.3.6-4-586.js b/test/built-ins/Object/defineProperty/15.2.3.6-4-586.js
index f10dbde3ad3c1e0b4aac8e08501f700e8aa6829f..37c718de92e39bea8f939f4b0cf0a94506c989a9 100644
--- a/test/built-ins/Object/defineProperty/15.2.3.6-4-586.js
+++ b/test/built-ins/Object/defineProperty/15.2.3.6-4-586.js
@@ -10,7 +10,7 @@ includes: [propertyHelper.js]
 ---*/
 
 var data = "data";
-try {
+
     Object.defineProperty(Object.prototype, "prop", {
         get: function () {
             return data;
@@ -23,6 +23,3 @@ try {
     assert(!JSON.hasOwnProperty("prop"));
     assert.sameValue(JSON.prop, "data");
     assert.sameValue(data, "data");
-} finally {
-    delete Object.prototype.prop;
-}
diff --git a/test/built-ins/Object/defineProperty/15.2.3.6-4-587.js b/test/built-ins/Object/defineProperty/15.2.3.6-4-587.js
index 911768de1212a590efcf2e870b147c1bd89f4b09..441dfe023fe7c6df5bb174733ece6b363bd61642 100644
--- a/test/built-ins/Object/defineProperty/15.2.3.6-4-587.js
+++ b/test/built-ins/Object/defineProperty/15.2.3.6-4-587.js
@@ -4,12 +4,10 @@
 /*---
 es5id: 15.2.3.6-4-587
 description: ES5 Attributes - Inherited property is non-enumerable (Math)
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
         var data = "data";
-        try {
+
             Object.defineProperty(Object.prototype, "prop", {
                 get: function () {
                     return data;
@@ -24,9 +22,5 @@ function testcase() {
                 }
             }
 
-            return !Math.hasOwnProperty("prop") && !verifyEnumerable;
-        } finally {
-            delete Object.prototype.prop;
-        }
-    }
-runTestCase(testcase);
+assert.sameValue(Math.hasOwnProperty("prop"), false, 'Math.hasOwnProperty("prop")');
+assert.sameValue(verifyEnumerable, false, 'verifyEnumerable');
diff --git a/test/built-ins/Object/defineProperty/15.2.3.6-4-593.js b/test/built-ins/Object/defineProperty/15.2.3.6-4-593.js
index 558c90b472e9c24bd8d30520c2d01dc9e8ae821f..877f17efb02b36a445c2a296afb90f3a936c3aaa 100644
--- a/test/built-ins/Object/defineProperty/15.2.3.6-4-593.js
+++ b/test/built-ins/Object/defineProperty/15.2.3.6-4-593.js
@@ -7,13 +7,11 @@ description: >
     ES5 Attributes - [[Get]] field of inherited property of
     [[Prototype]] internal property is correct
     (Function.prototype.bind)
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
         var foo = function () { };
         var data = "data";
-        try {
+
             Object.defineProperty(Function.prototype, "prop", {
                 get: function () {
                     return data;
@@ -27,9 +25,5 @@ function testcase() {
 
             var obj = foo.bind({});
 
-            return !obj.hasOwnProperty("prop") && obj.prop === data;
-        } finally {
-            delete Function.prototype.prop;
-        }
-    }
-runTestCase(testcase);
+assert.sameValue(obj.hasOwnProperty("prop"), false, 'obj.hasOwnProperty("prop")');
+assert.sameValue(obj.prop, data, 'obj.prop');
diff --git a/test/built-ins/Object/defineProperty/15.2.3.6-4-594.js b/test/built-ins/Object/defineProperty/15.2.3.6-4-594.js
index 6fe125ff174b7ac668e0f24345a696c4efa66b6c..8d572667987337ae3945d7607b51ea3450254b06 100644
--- a/test/built-ins/Object/defineProperty/15.2.3.6-4-594.js
+++ b/test/built-ins/Object/defineProperty/15.2.3.6-4-594.js
@@ -6,13 +6,11 @@ es5id: 15.2.3.6-4-594
 description: >
     ES5 Attributes - Success to update value of property into of
     [[Proptotype]] internal property (Function.prototype.bind)
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
         var foo = function () { };
         var data = "data";
-        try {
+
             Object.defineProperty(Function.prototype, "prop", {
                 get: function () {
                     return data;
@@ -27,9 +25,5 @@ function testcase() {
             var obj = foo.bind({});
             obj.prop = "overrideData";
 
-            return !obj.hasOwnProperty("prop") && obj.prop === "overrideData";
-        } finally {
-            delete Function.prototype.prop;
-        }
-    }
-runTestCase(testcase);
+assert.sameValue(obj.hasOwnProperty("prop"), false, 'obj.hasOwnProperty("prop")');
+assert.sameValue(obj.prop, "overrideData", 'obj.prop');
diff --git a/test/built-ins/Object/defineProperty/15.2.3.6-4-595.js b/test/built-ins/Object/defineProperty/15.2.3.6-4-595.js
index 30be14f7a26a5cdb61228a426e7c2be5fc850486..2f800ac1cd9481e5cb942bb4752b677b86ced8c9 100644
--- a/test/built-ins/Object/defineProperty/15.2.3.6-4-595.js
+++ b/test/built-ins/Object/defineProperty/15.2.3.6-4-595.js
@@ -6,13 +6,11 @@ es5id: 15.2.3.6-4-595
 description: >
     ES5 Attributes - Inherited property is enumerable
     (Function.prototype.bind)
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
         var foo = function () { };
         var data = "data";
-        try {
+
             Object.defineProperty(Function.prototype, "prop", {
                 get: function () {
                     return data;
@@ -33,9 +31,5 @@ function testcase() {
                 }
             }
 
-            return !obj.hasOwnProperty("prop") && verifyEnumerable;
-        } finally {
-            delete Function.prototype.prop;
-        }
-    }
-runTestCase(testcase);
+assert.sameValue(obj.hasOwnProperty("prop"), false, 'obj.hasOwnProperty("prop")');
+assert(verifyEnumerable, 'verifyEnumerable !== true');
diff --git a/test/built-ins/Object/defineProperty/15.2.3.6-4-596.js b/test/built-ins/Object/defineProperty/15.2.3.6-4-596.js
index 8c99225e05ec1762d5d908eb51f34bdc599a02ef..5489deaa0a87737140ea1de7077072f9cf81b9a5 100644
--- a/test/built-ins/Object/defineProperty/15.2.3.6-4-596.js
+++ b/test/built-ins/Object/defineProperty/15.2.3.6-4-596.js
@@ -11,7 +11,7 @@ includes: [propertyHelper.js]
 
 var foo = function () { };
 var data = "data";
-try {
+
     Object.defineProperty(Function.prototype, "prop", {
         get: function () {
             return data;
@@ -25,6 +25,3 @@ try {
     assert(!obj.hasOwnProperty("prop"));
     verifyNotWritable(obj, "prop", "nocheck");
     assert.sameValue(obj.prop, "data");;
-} finally {
-    delete Function.prototype.prop;
-}
diff --git a/test/built-ins/Object/defineProperty/15.2.3.6-4-597.js b/test/built-ins/Object/defineProperty/15.2.3.6-4-597.js
index 81c4daa170f0014bda97d9a0dbac2e2d968e14e3..9a46c54cd9064d0f4b8d37895432f535f7a7b1ee 100644
--- a/test/built-ins/Object/defineProperty/15.2.3.6-4-597.js
+++ b/test/built-ins/Object/defineProperty/15.2.3.6-4-597.js
@@ -6,13 +6,11 @@ es5id: 15.2.3.6-4-597
 description: >
     ES5 Attributes - Inherited property is non-enumerable
     (Function.prototype.bind)
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
         var foo = function () { };
         var data = "data";
-        try {
+
             Object.defineProperty(Function.prototype, "prop", {
                 get: function () {
                     return data;
@@ -30,9 +28,5 @@ function testcase() {
                 }
             }
 
-            return !obj.hasOwnProperty("prop") && !verifyEnumerable;
-        } finally {
-            delete Function.prototype.prop;
-        }
-    }
-runTestCase(testcase);
+assert.sameValue(obj.hasOwnProperty("prop"), false, 'obj.hasOwnProperty("prop")');
+assert.sameValue(verifyEnumerable, false, 'verifyEnumerable');
diff --git a/test/built-ins/Object/defineProperty/15.2.3.6-4-598.js b/test/built-ins/Object/defineProperty/15.2.3.6-4-598.js
index 640eb9e6ed517c6c11ca0e9ef69b2abb6cd72322..55420c69fc75f695dfdf47e68ab84b87def969d1 100644
--- a/test/built-ins/Object/defineProperty/15.2.3.6-4-598.js
+++ b/test/built-ins/Object/defineProperty/15.2.3.6-4-598.js
@@ -6,17 +6,14 @@ es5id: 15.2.3.6-4-598
 description: >
     ES5 Attributes - all attributes in Object.getPrototypeOf are
     correct
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
         var desc = Object.getOwnPropertyDescriptor(Object, "getPrototypeOf");
 
         var propertyAreCorrect = (desc.writable === true && desc.enumerable === false && desc.configurable === true);
 
         var temp = Object.getPrototypeOf;
 
-        try {
             Object.getPrototypeOf = "2010";
 
             var isWritable = (Object.getPrototypeOf === "2010");
@@ -33,14 +30,7 @@ function testcase() {
 
             var isConfigurable = !Object.hasOwnProperty("getPrototypeOf");
 
-            return propertyAreCorrect && isWritable && !isEnumerable && isConfigurable;
-        } finally {
-            Object.defineProperty(Object, "getPrototypeOf", {
-                value: temp,
-                writable: true,
-                enumerable: false,
-                configurable: true
-            });
-        }
-    }
-runTestCase(testcase);
+assert(propertyAreCorrect, 'propertyAreCorrect !== true');
+assert(isWritable, 'isWritable !== true');
+assert.sameValue(isEnumerable, false, 'isEnumerable');
+assert(isConfigurable, 'isConfigurable !== true');
diff --git a/test/built-ins/Object/defineProperty/15.2.3.6-4-599.js b/test/built-ins/Object/defineProperty/15.2.3.6-4-599.js
index 03b2f21f712fd47ff0f0df8df0726227d39a3ccc..00e61a739d90799e7e1d84e3bac7185f0a48df56 100644
--- a/test/built-ins/Object/defineProperty/15.2.3.6-4-599.js
+++ b/test/built-ins/Object/defineProperty/15.2.3.6-4-599.js
@@ -6,17 +6,14 @@ es5id: 15.2.3.6-4-599
 description: >
     ES5 Attributes - all attributes in Object.getOwnPropertyDescriptor
     are correct
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
         var desc = Object.getOwnPropertyDescriptor(Object, "getOwnPropertyDescriptor");
 
         var propertyAreCorrect = (desc.writable === true && desc.enumerable === false && desc.configurable === true);
 
         var temp = Object.getOwnPropertyDescriptor;
 
-        try {
             Object.getOwnPropertyDescriptor = "2010";
 
             var isWritable = (Object.getOwnPropertyDescriptor === "2010");
@@ -33,14 +30,7 @@ function testcase() {
 
             var isConfigurable = !Object.hasOwnProperty("getOwnPropertyDescriptor");
 
-            return propertyAreCorrect && isWritable && !isEnumerable && isConfigurable;
-        } finally {
-            Object.defineProperty(Object, "getOwnPropertyDescriptor", {
-                value: temp,
-                writable: true,
-                enumerable: false,
-                configurable: true
-            });
-        }
-    }
-runTestCase(testcase);
+assert(propertyAreCorrect, 'propertyAreCorrect !== true');
+assert(isWritable, 'isWritable !== true');
+assert.sameValue(isEnumerable, false, 'isEnumerable');
+assert(isConfigurable, 'isConfigurable !== true');
diff --git a/test/built-ins/Object/defineProperty/15.2.3.6-4-600.js b/test/built-ins/Object/defineProperty/15.2.3.6-4-600.js
index ad0ab1994da1c9e970bc53573d94db4244246f29..7f1ab0b27baad49bcd930379398be912bf1c6349 100644
--- a/test/built-ins/Object/defineProperty/15.2.3.6-4-600.js
+++ b/test/built-ins/Object/defineProperty/15.2.3.6-4-600.js
@@ -6,17 +6,14 @@ es5id: 15.2.3.6-4-600
 description: >
     ES5 Attributes - all attributes in Object.getOwnPropertyNames are
     correct
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
         var desc = Object.getOwnPropertyDescriptor(Object, "getOwnPropertyNames");
 
         var propertyAreCorrect = (desc.writable === true && desc.enumerable === false && desc.configurable === true);
 
         var temp = Object.getOwnPropertyNames;
 
-        try {
             Object.getOwnPropertyNames = "2010";
 
             var isWritable = (Object.getOwnPropertyNames === "2010");
@@ -33,14 +30,7 @@ function testcase() {
 
             var isConfigurable = !Object.hasOwnProperty("getOwnPropertyNames");
 
-            return propertyAreCorrect && isWritable && !isEnumerable && isConfigurable;
-        } finally {
-            Object.defineProperty(Object, "getOwnPropertyNames", {
-                value: temp,
-                writable: true,
-                enumerable: false,
-                configurable: true
-            });
-        }
-    }
-runTestCase(testcase);
+assert(propertyAreCorrect, 'propertyAreCorrect !== true');
+assert(isWritable, 'isWritable !== true');
+assert.sameValue(isEnumerable, false, 'isEnumerable');
+assert(isConfigurable, 'isConfigurable !== true');
diff --git a/test/built-ins/Object/defineProperty/15.2.3.6-4-601.js b/test/built-ins/Object/defineProperty/15.2.3.6-4-601.js
index 52108e4df44627808adcdbb6e051f54ab0863b79..b9bcd8dc3928241455b4f0f8d4883c28781b9da2 100644
--- a/test/built-ins/Object/defineProperty/15.2.3.6-4-601.js
+++ b/test/built-ins/Object/defineProperty/15.2.3.6-4-601.js
@@ -4,17 +4,14 @@
 /*---
 es5id: 15.2.3.6-4-601
 description: ES5 Attributes - all attributes in Object.create are correct
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
         var desc = Object.getOwnPropertyDescriptor(Object, "create");
 
         var propertyAreCorrect = (desc.writable === true && desc.enumerable === false && desc.configurable === true);
 
         var temp = Object.create;
 
-        try {
             Object.create = "2010";
 
             var isWritable = (Object.create === "2010");
@@ -31,14 +28,7 @@ function testcase() {
 
             var isConfigurable = !Object.hasOwnProperty("create");
 
-            return propertyAreCorrect && isWritable && !isEnumerable && isConfigurable;
-        } finally {
-            Object.defineProperty(Object, "create", {
-                value: temp,
-                writable: true,
-                enumerable: false,
-                configurable: true
-            });
-        }
-    }
-runTestCase(testcase);
+assert(propertyAreCorrect, 'propertyAreCorrect !== true');
+assert(isWritable, 'isWritable !== true');
+assert.sameValue(isEnumerable, false, 'isEnumerable');
+assert(isConfigurable, 'isConfigurable !== true');
diff --git a/test/built-ins/Object/defineProperty/15.2.3.6-4-602.js b/test/built-ins/Object/defineProperty/15.2.3.6-4-602.js
index 6fd4a3d9580566fa7edd986a95e956b9e94daf7f..d2f6f0de24d6a6929e061db82b799f97ff0c53c0 100644
--- a/test/built-ins/Object/defineProperty/15.2.3.6-4-602.js
+++ b/test/built-ins/Object/defineProperty/15.2.3.6-4-602.js
@@ -6,15 +6,13 @@ es5id: 15.2.3.6-4-602
 description: >
     ES5 Attributes - all attributes in Object.defineProperty are
     correct
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
         var desc = Object.getOwnPropertyDescriptor(Object, "defineProperty");
 
         var propertyAreCorrect = (desc.writable === true && desc.enumerable === false && desc.configurable === true);
         var temp = Object.defineProperty;
-        try {
+
             Object.defineProperty = "2010";
 
             var isWritable = (Object.defineProperty === "2010");
@@ -31,12 +29,7 @@ function testcase() {
 
             var isConfigurable = !Object.hasOwnProperty("defineProperty");
 
-            return propertyAreCorrect && isWritable && !isEnumerable && isConfigurable;
-        } finally {
-            Object.defineProperty = temp;
-            Object.defineProperty(Object, "defineProperty", {
-                enumerable: false
-            });
-        }
-    }
-runTestCase(testcase);
+assert(propertyAreCorrect, 'propertyAreCorrect !== true');
+assert(isWritable, 'isWritable !== true');
+assert.sameValue(isEnumerable, false, 'isEnumerable');
+assert(isConfigurable, 'isConfigurable !== true');
diff --git a/test/built-ins/Object/defineProperty/15.2.3.6-4-603.js b/test/built-ins/Object/defineProperty/15.2.3.6-4-603.js
index 542f3b58efe04f33638f8594265b51b1b2d86eee..7959a39ee2d3621cd781ff4541c35de3a40d5a11 100644
--- a/test/built-ins/Object/defineProperty/15.2.3.6-4-603.js
+++ b/test/built-ins/Object/defineProperty/15.2.3.6-4-603.js
@@ -6,17 +6,14 @@ es5id: 15.2.3.6-4-603
 description: >
     ES5 Attributes - all attributes in Object.defineProperties are
     correct
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
         var desc = Object.getOwnPropertyDescriptor(Object, "defineProperties");
 
         var propertyAreCorrect = (desc.writable === true && desc.enumerable === false && desc.configurable === true);
 
         var temp = Object.defineProperties;
 
-        try {
             Object.defineProperties = "2010";
 
             var isWritable = (Object.defineProperties === "2010");
@@ -33,14 +30,7 @@ function testcase() {
 
             var isConfigurable = !Object.hasOwnProperty("defineProperties");
 
-            return propertyAreCorrect && isWritable && !isEnumerable && isConfigurable;
-        } finally {
-            Object.defineProperty(Object, "defineProperties", {
-                value: temp,
-                writable: true,
-                enumerable: false,
-                configurable: true
-            });
-        }
-    }
-runTestCase(testcase);
+assert(propertyAreCorrect, 'propertyAreCorrect !== true');
+assert(isWritable, 'isWritable !== true');
+assert.sameValue(isEnumerable, false, 'isEnumerable');
+assert(isConfigurable, 'isConfigurable !== true');
diff --git a/test/built-ins/Object/defineProperty/15.2.3.6-4-604.js b/test/built-ins/Object/defineProperty/15.2.3.6-4-604.js
index c008b7363ad185c8e44463c649ace037e93b6aa8..497ebad757995270f6b0c99459abd2ba88d03996 100644
--- a/test/built-ins/Object/defineProperty/15.2.3.6-4-604.js
+++ b/test/built-ins/Object/defineProperty/15.2.3.6-4-604.js
@@ -4,17 +4,14 @@
 /*---
 es5id: 15.2.3.6-4-604
 description: ES5 Attributes - all attributes in Object.seal are correct
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
         var desc = Object.getOwnPropertyDescriptor(Object, "seal");
 
         var propertyAreCorrect = (desc.writable === true && desc.enumerable === false && desc.configurable === true);
 
         var temp = Object.seal;
 
-        try {
             Object.seal = "2010";
 
             var isWritable = (Object.seal === "2010");
@@ -31,14 +28,7 @@ function testcase() {
 
             var isConfigurable = !Object.hasOwnProperty("seal");
 
-            return propertyAreCorrect && isWritable && !isEnumerable && isConfigurable;
-        } finally {
-            Object.defineProperty(Object, "seal", {
-                value: temp,
-                writable: true,
-                enumerable: false,
-                configurable: true
-            });
-        }
-    }
-runTestCase(testcase);
+assert(propertyAreCorrect, 'propertyAreCorrect !== true');
+assert(isWritable, 'isWritable !== true');
+assert.sameValue(isEnumerable, false, 'isEnumerable');
+assert(isConfigurable, 'isConfigurable !== true');
diff --git a/test/built-ins/Object/defineProperty/15.2.3.6-4-605.js b/test/built-ins/Object/defineProperty/15.2.3.6-4-605.js
index a9a897e8ffec3e6e4a38111480e432fe861f182e..45952f26c75646f187b6eb57ba8c45615c250941 100644
--- a/test/built-ins/Object/defineProperty/15.2.3.6-4-605.js
+++ b/test/built-ins/Object/defineProperty/15.2.3.6-4-605.js
@@ -4,17 +4,14 @@
 /*---
 es5id: 15.2.3.6-4-605
 description: ES5 Attributes - all attributes in Object.freeze are correct
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
         var desc = Object.getOwnPropertyDescriptor(Object, "freeze");
 
         var propertyAreCorrect = (desc.writable === true && desc.enumerable === false && desc.configurable === true);
 
         var temp = Object.freeze;
 
-        try {
             Object.freeze = "2010";
 
             var isWritable = (Object.freeze === "2010");
@@ -31,14 +28,7 @@ function testcase() {
 
             var isConfigurable = !Object.hasOwnProperty("freeze");
 
-            return propertyAreCorrect && isWritable && !isEnumerable && isConfigurable;
-        } finally {
-            Object.defineProperty(Object, "freeze", {
-                value: temp,
-                writable: true,
-                enumerable: false,
-                configurable: true
-            });
-        }
-    }
-runTestCase(testcase);
+assert(propertyAreCorrect, 'propertyAreCorrect !== true');
+assert(isWritable, 'isWritable !== true');
+assert.sameValue(isEnumerable, false, 'isEnumerable');
+assert(isConfigurable, 'isConfigurable !== true');
diff --git a/test/built-ins/Object/defineProperty/15.2.3.6-4-606.js b/test/built-ins/Object/defineProperty/15.2.3.6-4-606.js
index 471a8a7db5591407a4d8a739ccdd3a75673a08c7..a3621fdd101ebde86bfbeb3a10e52d2fc8a106e3 100644
--- a/test/built-ins/Object/defineProperty/15.2.3.6-4-606.js
+++ b/test/built-ins/Object/defineProperty/15.2.3.6-4-606.js
@@ -6,17 +6,14 @@ es5id: 15.2.3.6-4-606
 description: >
     ES5 Attributes - all attributes in Object.preventExtensions are
     correct
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
         var desc = Object.getOwnPropertyDescriptor(Object, "preventExtensions");
 
         var propertyAreCorrect = (desc.writable === true && desc.enumerable === false && desc.configurable === true);
 
         var temp = Object.preventExtensions;
 
-        try {
             Object.preventExtensions = "2010";
 
             var isWritable = (Object.preventExtensions === "2010");
@@ -33,14 +30,7 @@ function testcase() {
 
             var isConfigurable = !Object.hasOwnProperty("preventExtensions");
 
-            return propertyAreCorrect && isWritable && !isEnumerable && isConfigurable;
-        } finally {
-            Object.defineProperty(Object, "preventExtensions", {
-                value: temp,
-                writable: true,
-                enumerable: false,
-                configurable: true
-            });
-        }
-    }
-runTestCase(testcase);
+assert(propertyAreCorrect, 'propertyAreCorrect !== true');
+assert(isWritable, 'isWritable !== true');
+assert.sameValue(isEnumerable, false, 'isEnumerable');
+assert(isConfigurable, 'isConfigurable !== true');
diff --git a/test/built-ins/Object/defineProperty/15.2.3.6-4-607.js b/test/built-ins/Object/defineProperty/15.2.3.6-4-607.js
index 58005230005b073cd8d71cc04da18a40b1916ad1..88beb3e67604cf1655be610d0dd776ad99b03aee 100644
--- a/test/built-ins/Object/defineProperty/15.2.3.6-4-607.js
+++ b/test/built-ins/Object/defineProperty/15.2.3.6-4-607.js
@@ -4,17 +4,14 @@
 /*---
 es5id: 15.2.3.6-4-607
 description: ES5 Attributes - all attributes in Object.isSealed are correct
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
         var desc = Object.getOwnPropertyDescriptor(Object, "isSealed");
 
         var propertyAreCorrect = (desc.writable === true && desc.enumerable === false && desc.configurable === true);
 
         var temp = Object.isSealed;
 
-        try {
             Object.isSealed = "2010";
 
             var isWritable = (Object.isSealed === "2010");
@@ -31,14 +28,7 @@ function testcase() {
 
             var isConfigurable = !Object.hasOwnProperty("isSealed");
 
-            return propertyAreCorrect && isWritable && !isEnumerable && isConfigurable;
-        } finally {
-            Object.defineProperty(Object, "isSealed", {
-                value: temp,
-                writable: true,
-                enumerable: false,
-                configurable: true
-            });
-        }
-    }
-runTestCase(testcase);
+assert(propertyAreCorrect, 'propertyAreCorrect !== true');
+assert(isWritable, 'isWritable !== true');
+assert.sameValue(isEnumerable, false, 'isEnumerable');
+assert(isConfigurable, 'isConfigurable !== true');
diff --git a/test/built-ins/Object/defineProperty/15.2.3.6-4-608.js b/test/built-ins/Object/defineProperty/15.2.3.6-4-608.js
index cde4a901bd5c31a8e5631f08e42ffff7df51abab..f752bc678059a27d8a3291ed5d62b00d536af387 100644
--- a/test/built-ins/Object/defineProperty/15.2.3.6-4-608.js
+++ b/test/built-ins/Object/defineProperty/15.2.3.6-4-608.js
@@ -4,17 +4,14 @@
 /*---
 es5id: 15.2.3.6-4-608
 description: ES5 Attributes - all attributes in Object.isFrozen are correct
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
         var desc = Object.getOwnPropertyDescriptor(Object, "isFrozen");
 
         var propertyAreCorrect = (desc.writable === true && desc.enumerable === false && desc.configurable === true);
 
         var temp = Object.isFrozen;
 
-        try {
             Object.isFrozen = "2010";
 
             var isWritable = (Object.isFrozen === "2010");
@@ -31,14 +28,7 @@ function testcase() {
 
             var isConfigurable = !Object.hasOwnProperty("isFrozen");
 
-            return propertyAreCorrect && isWritable && !isEnumerable && isConfigurable;
-        } finally {
-            Object.defineProperty(Object, "isFrozen", {
-                value: temp,
-                writable: true,
-                enumerable: false,
-                configurable: true
-            });
-        }
-    }
-runTestCase(testcase);
+assert(propertyAreCorrect, 'propertyAreCorrect !== true');
+assert(isWritable, 'isWritable !== true');
+assert.sameValue(isEnumerable, false, 'isEnumerable');
+assert(isConfigurable, 'isConfigurable !== true');
diff --git a/test/built-ins/Object/defineProperty/15.2.3.6-4-609.js b/test/built-ins/Object/defineProperty/15.2.3.6-4-609.js
index 43ad1010e1479de3de5646bc75b36683bf83afdc..aa12befa7e19235ccc87dbbe4e7064643db8c759 100644
--- a/test/built-ins/Object/defineProperty/15.2.3.6-4-609.js
+++ b/test/built-ins/Object/defineProperty/15.2.3.6-4-609.js
@@ -4,17 +4,14 @@
 /*---
 es5id: 15.2.3.6-4-609
 description: ES5 Attributes - all attributes in Object.isExtensible are correct
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
         var desc = Object.getOwnPropertyDescriptor(Object, "isExtensible");
 
         var propertyAreCorrect = (desc.writable === true && desc.enumerable === false && desc.configurable === true);
 
         var temp = Object.isExtensible;
 
-        try {
             Object.isExtensible = "2010";
 
             var isWritable = (Object.isExtensible === "2010");
@@ -31,14 +28,7 @@ function testcase() {
 
             var isConfigurable = !Object.hasOwnProperty("isExtensible");
 
-            return propertyAreCorrect && isWritable && !isEnumerable && isConfigurable;
-        } finally {
-            Object.defineProperty(Object, "isExtensible", {
-                value: temp,
-                writable: true,
-                enumerable: false,
-                configurable: true
-            });
-        }
-    }
-runTestCase(testcase);
+assert(propertyAreCorrect, 'propertyAreCorrect !== true');
+assert(isWritable, 'isWritable !== true');
+assert.sameValue(isEnumerable, false, 'isEnumerable');
+assert(isConfigurable, 'isConfigurable !== true');
diff --git a/test/built-ins/Object/defineProperty/15.2.3.6-4-610.js b/test/built-ins/Object/defineProperty/15.2.3.6-4-610.js
index e8b2403df667c022283d242ef29820d4c7a153d7..07cc6c4d878ea4f3fe8ddeb6e3778ce691a23c13 100644
--- a/test/built-ins/Object/defineProperty/15.2.3.6-4-610.js
+++ b/test/built-ins/Object/defineProperty/15.2.3.6-4-610.js
@@ -4,17 +4,14 @@
 /*---
 es5id: 15.2.3.6-4-610
 description: ES5 Attributes - all attributes in Object.keys are correct
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
         var desc = Object.getOwnPropertyDescriptor(Object, "keys");
 
         var propertyAreCorrect = (desc.writable === true && desc.enumerable === false && desc.configurable === true);
 
         var temp = Object.keys;
 
-        try {
             Object.keys = "2010";
 
             var isWritable = (Object.keys === "2010");
@@ -31,14 +28,7 @@ function testcase() {
 
             var isConfigurable = !Object.hasOwnProperty("keys");
 
-            return propertyAreCorrect && isWritable && !isEnumerable && isConfigurable;
-        } finally {
-            Object.defineProperty(Object, "keys", {
-                value: temp,
-                writable: true,
-                enumerable: false,
-                configurable: true
-            });
-        }
-    }
-runTestCase(testcase);
+assert(propertyAreCorrect, 'propertyAreCorrect !== true');
+assert(isWritable, 'isWritable !== true');
+assert.sameValue(isEnumerable, false, 'isEnumerable');
+assert(isConfigurable, 'isConfigurable !== true');
diff --git a/test/built-ins/Object/defineProperty/15.2.3.6-4-611.js b/test/built-ins/Object/defineProperty/15.2.3.6-4-611.js
index 949e52fad84c0938806262c11578757f33b11ba7..aa0a5b9ce82bd714d43ec4738662dc4454421f28 100644
--- a/test/built-ins/Object/defineProperty/15.2.3.6-4-611.js
+++ b/test/built-ins/Object/defineProperty/15.2.3.6-4-611.js
@@ -6,17 +6,14 @@ es5id: 15.2.3.6-4-611
 description: >
     ES5 Attributes - all attributes in Function.prototype.bind are
     correct
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
         var desc = Object.getOwnPropertyDescriptor(Function.prototype, "bind");
 
         var propertyAreCorrect = (desc.writable === true && desc.enumerable === false && desc.configurable === true);
 
         var temp = Function.prototype.bind;
 
-        try {
             Function.prototype.bind = "2010";
 
             var isWritable = (Function.prototype.bind === "2010");
@@ -33,14 +30,7 @@ function testcase() {
 
             var isConfigurable = !Function.prototype.hasOwnProperty("bind");
 
-            return propertyAreCorrect && isWritable && !isEnumerable && isConfigurable;
-        } finally {
-            Object.defineProperty(Function.prototype, "bind", {
-                value: temp,
-                writable: true,
-                enumerable: false,
-                configurable: true
-            });
-        }
-    }
-runTestCase(testcase);
+assert(propertyAreCorrect, 'propertyAreCorrect !== true');
+assert(isWritable, 'isWritable !== true');
+assert.sameValue(isEnumerable, false, 'isEnumerable');
+assert(isConfigurable, 'isConfigurable !== true');
diff --git a/test/built-ins/Object/defineProperty/15.2.3.6-4-612.js b/test/built-ins/Object/defineProperty/15.2.3.6-4-612.js
index 3378d14975752343ef58ab31eff6abde8ba58079..74ff9cba3a633f03c160beb163ddc435ab0d23cf 100644
--- a/test/built-ins/Object/defineProperty/15.2.3.6-4-612.js
+++ b/test/built-ins/Object/defineProperty/15.2.3.6-4-612.js
@@ -6,17 +6,14 @@ es5id: 15.2.3.6-4-612
 description: >
     ES5 Attributes - all attributes in Array.prototype.indexOf are
     correct
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
         var desc = Object.getOwnPropertyDescriptor(Array.prototype, "indexOf");
 
         var propertyAreCorrect = (desc.writable === true && desc.enumerable === false && desc.configurable === true);
 
         var temp = Array.prototype.indexOf;
 
-        try {
             Array.prototype.indexOf = "2010";
 
             var isWritable = (Array.prototype.indexOf === "2010");
@@ -33,14 +30,7 @@ function testcase() {
 
             var isConfigurable = !Array.prototype.hasOwnProperty("indexOf");
 
-            return propertyAreCorrect && isWritable && !isEnumerable && isConfigurable;
-        } finally {
-            Object.defineProperty(Array.prototype, "indexOf", {
-                value: temp,
-                writable: true,
-                enumerable: false,
-                configurable: true
-            });
-        }
-    }
-runTestCase(testcase);
+assert(propertyAreCorrect, 'propertyAreCorrect !== true');
+assert(isWritable, 'isWritable !== true');
+assert.sameValue(isEnumerable, false, 'isEnumerable');
+assert(isConfigurable, 'isConfigurable !== true');
diff --git a/test/built-ins/Object/defineProperty/15.2.3.6-4-613.js b/test/built-ins/Object/defineProperty/15.2.3.6-4-613.js
index 8d179d0b2ece2b37f58de114e5276976b41defbc..58bf1afa629abd793de5a5fd307ecd798b9fb689 100644
--- a/test/built-ins/Object/defineProperty/15.2.3.6-4-613.js
+++ b/test/built-ins/Object/defineProperty/15.2.3.6-4-613.js
@@ -4,17 +4,14 @@
 /*---
 es5id: 15.2.3.6-4-613
 description: ES5 Attributes - all attributes in Object.lastIndexOf are correct
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
         var desc = Object.getOwnPropertyDescriptor(Array.prototype, "lastIndexOf");
 
         var propertyAreCorrect = (desc.writable === true && desc.enumerable === false && desc.configurable === true);
 
         var temp = Array.prototype.lastIndexOf;
 
-        try {
             Array.prototype.lastIndexOf = "2010";
 
             var isWritable = (Array.prototype.lastIndexOf === "2010");
@@ -31,14 +28,7 @@ function testcase() {
 
             var isConfigurable = !Array.prototype.hasOwnProperty("lastIndexOf");
 
-            return propertyAreCorrect && isWritable && !isEnumerable && isConfigurable;
-        } finally {
-            Object.defineProperty(Array.prototype, "lastIndexOf", {
-                value: temp,
-                writable: true,
-                enumerable: false,
-                configurable: true
-            });
-        }
-    }
-runTestCase(testcase);
+assert(propertyAreCorrect, 'propertyAreCorrect !== true');
+assert(isWritable, 'isWritable !== true');
+assert.sameValue(isEnumerable, false, 'isEnumerable');
+assert(isConfigurable, 'isConfigurable !== true');
diff --git a/test/built-ins/Object/defineProperty/15.2.3.6-4-614.js b/test/built-ins/Object/defineProperty/15.2.3.6-4-614.js
index f4ee4f5886c81b13a33fb6243ac8f63c266b2e7e..cd393df4cf0091050f95daec7d6d63ec733cc497 100644
--- a/test/built-ins/Object/defineProperty/15.2.3.6-4-614.js
+++ b/test/built-ins/Object/defineProperty/15.2.3.6-4-614.js
@@ -6,17 +6,14 @@ es5id: 15.2.3.6-4-614
 description: >
     ES5 Attributes - all attributes in Array.prototype.every are
     correct
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
         var desc = Object.getOwnPropertyDescriptor(Array.prototype, "every");
 
         var propertyAreCorrect = (desc.writable === true && desc.enumerable === false && desc.configurable === true);
 
         var temp = Array.prototype.every;
 
-        try {
             Array.prototype.every = "2010";
 
             var isWritable = (Array.prototype.every === "2010");
@@ -33,14 +30,7 @@ function testcase() {
 
             var isConfigurable = !Array.prototype.hasOwnProperty("every");
 
-            return propertyAreCorrect && isWritable && !isEnumerable && isConfigurable;
-        } finally {
-            Object.defineProperty(Array.prototype, "every", {
-                value: temp,
-                writable: true,
-                enumerable: false,
-                configurable: true
-            });
-        }
-    }
-runTestCase(testcase);
+assert(propertyAreCorrect, 'propertyAreCorrect !== true');
+assert(isWritable, 'isWritable !== true');
+assert.sameValue(isEnumerable, false, 'isEnumerable');
+assert(isConfigurable, 'isConfigurable !== true');
diff --git a/test/built-ins/Object/defineProperty/15.2.3.6-4-615.js b/test/built-ins/Object/defineProperty/15.2.3.6-4-615.js
index c93ce2921127ec67d6bf25c8d6dc51c4a389937d..172758c2c60d59d80d1ff53d2b20fb0383c879cc 100644
--- a/test/built-ins/Object/defineProperty/15.2.3.6-4-615.js
+++ b/test/built-ins/Object/defineProperty/15.2.3.6-4-615.js
@@ -4,17 +4,14 @@
 /*---
 es5id: 15.2.3.6-4-615
 description: ES5 Attributes - all attributes in Array.prototype.some are correct
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
         var desc = Object.getOwnPropertyDescriptor(Array.prototype, "some");
 
         var propertyAreCorrect = (desc.writable === true && desc.enumerable === false && desc.configurable === true);
 
         var temp = Array.prototype.some;
 
-        try {
             Array.prototype.some = "2010";
 
             var isWritable = (Array.prototype.some === "2010");
@@ -31,14 +28,7 @@ function testcase() {
 
             var isConfigurable = !Array.prototype.hasOwnProperty("some");
 
-            return propertyAreCorrect && isWritable && !isEnumerable && isConfigurable;
-        } finally {
-            Object.defineProperty(Array.prototype, "some", {
-                value: temp,
-                writable: true,
-                enumerable: false,
-                configurable: true
-            });
-        }
-    }
-runTestCase(testcase);
+assert(propertyAreCorrect, 'propertyAreCorrect !== true');
+assert(isWritable, 'isWritable !== true');
+assert.sameValue(isEnumerable, false, 'isEnumerable');
+assert(isConfigurable, 'isConfigurable !== true');
diff --git a/test/built-ins/Object/defineProperty/15.2.3.6-4-616.js b/test/built-ins/Object/defineProperty/15.2.3.6-4-616.js
index e922be1de2d8b52fc02d6a90c21ab6fc3498c569..4a53ab993a5a172e6f5e58376ddc23d9372f70a5 100644
--- a/test/built-ins/Object/defineProperty/15.2.3.6-4-616.js
+++ b/test/built-ins/Object/defineProperty/15.2.3.6-4-616.js
@@ -6,17 +6,14 @@ es5id: 15.2.3.6-4-616
 description: >
     ES5 Attributes - all attributes in Array.prototype.forEach are
     correct
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
         var desc = Object.getOwnPropertyDescriptor(Array.prototype, "forEach");
 
         var propertyAreCorrect = (desc.writable === true && desc.enumerable === false && desc.configurable === true);
 
         var temp = Array.prototype.forEach;
 
-        try {
             Array.prototype.forEach = "2010";
 
             var isWritable = (Array.prototype.forEach === "2010");
@@ -33,14 +30,7 @@ function testcase() {
 
             var isConfigurable = !Array.prototype.hasOwnProperty("forEach");
 
-            return propertyAreCorrect && isWritable && !isEnumerable && isConfigurable;
-        } finally {
-            Object.defineProperty(Array.prototype, "forEach", {
-                value: temp,
-                writable: true,
-                enumerable: false,
-                configurable: true
-            });
-        }
-    }
-runTestCase(testcase);
+assert(propertyAreCorrect, 'propertyAreCorrect !== true');
+assert(isWritable, 'isWritable !== true');
+assert.sameValue(isEnumerable, false, 'isEnumerable');
+assert(isConfigurable, 'isConfigurable !== true');
diff --git a/test/built-ins/Object/defineProperty/15.2.3.6-4-617.js b/test/built-ins/Object/defineProperty/15.2.3.6-4-617.js
index e361a7aeec1b1c45306c1d71c8bf428439eb1e60..7e41f46c4e4ed3db3358667205ffffec8b4e133c 100644
--- a/test/built-ins/Object/defineProperty/15.2.3.6-4-617.js
+++ b/test/built-ins/Object/defineProperty/15.2.3.6-4-617.js
@@ -4,17 +4,14 @@
 /*---
 es5id: 15.2.3.6-4-617
 description: ES5 Attributes - all attributes in Array.prototype.map are correct
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
         var desc = Object.getOwnPropertyDescriptor(Array.prototype, "map");
 
         var propertyAreCorrect = (desc.writable === true && desc.enumerable === false && desc.configurable === true);
 
         var temp = Array.prototype.map;
 
-        try {
             Array.prototype.map = "2010";
 
             var isWritable = (Array.prototype.map === "2010");
@@ -31,14 +28,7 @@ function testcase() {
 
             var isConfigurable = !Array.prototype.hasOwnProperty("map");
 
-            return propertyAreCorrect && isWritable && !isEnumerable && isConfigurable;
-        } finally {
-            Object.defineProperty(Array.prototype, "map", {
-                value: temp,
-                writable: true,
-                enumerable: false,
-                configurable: true
-            });
-        }
-    }
-runTestCase(testcase);
+assert(propertyAreCorrect, 'propertyAreCorrect !== true');
+assert(isWritable, 'isWritable !== true');
+assert.sameValue(isEnumerable, false, 'isEnumerable');
+assert(isConfigurable, 'isConfigurable !== true');
diff --git a/test/built-ins/Object/defineProperty/15.2.3.6-4-618.js b/test/built-ins/Object/defineProperty/15.2.3.6-4-618.js
index 6685458f0894b273b4926e3c5158fbe3a60960b7..27492e2e35cde18ab4b56d596829c31c1e83ba16 100644
--- a/test/built-ins/Object/defineProperty/15.2.3.6-4-618.js
+++ b/test/built-ins/Object/defineProperty/15.2.3.6-4-618.js
@@ -6,17 +6,14 @@ es5id: 15.2.3.6-4-618
 description: >
     ES5 Attributes - all attributes in Array.prototype.filter are
     correct
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
         var desc = Object.getOwnPropertyDescriptor(Array.prototype, "filter");
 
         var propertyAreCorrect = (desc.writable === true && desc.enumerable === false && desc.configurable === true);
 
         var temp = Array.prototype.filter;
 
-        try {
             Array.prototype.filter = "2010";
 
             var isWritable = (Array.prototype.filter === "2010");
@@ -33,14 +30,7 @@ function testcase() {
 
             var isConfigurable = !Array.prototype.hasOwnProperty("filter");
 
-            return propertyAreCorrect && isWritable && !isEnumerable && isConfigurable;
-        } finally {
-            Object.defineProperty(Array.prototype, "filter", {
-                value: temp,
-                writable: true,
-                enumerable: false,
-                configurable: true
-            });
-        }
-    }
-runTestCase(testcase);
+assert(propertyAreCorrect, 'propertyAreCorrect !== true');
+assert(isWritable, 'isWritable !== true');
+assert.sameValue(isEnumerable, false, 'isEnumerable');
+assert(isConfigurable, 'isConfigurable !== true');
diff --git a/test/built-ins/Object/defineProperty/15.2.3.6-4-619.js b/test/built-ins/Object/defineProperty/15.2.3.6-4-619.js
index d0788918c76bcc0af18ab5961298d29f80141262..408f1417da6b64b18827a15b6e767ad915961234 100644
--- a/test/built-ins/Object/defineProperty/15.2.3.6-4-619.js
+++ b/test/built-ins/Object/defineProperty/15.2.3.6-4-619.js
@@ -6,17 +6,14 @@ es5id: 15.2.3.6-4-619
 description: >
     ES5 Attributes - all attributes in Array.prototype.reduce are
     correct
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
         var desc = Object.getOwnPropertyDescriptor(Array.prototype, "reduce");
 
         var propertyAreCorrect = (desc.writable === true && desc.enumerable === false && desc.configurable === true);
 
         var temp = Array.prototype.reduce;
 
-        try {
             Array.prototype.reduce = "2010";
 
             var isWritable = (Array.prototype.reduce === "2010");
@@ -33,14 +30,7 @@ function testcase() {
 
             var isConfigurable = !Array.prototype.hasOwnProperty("reduce");
 
-            return propertyAreCorrect && isWritable && !isEnumerable && isConfigurable;
-        } finally {
-            Object.defineProperty(Array.prototype, "reduce", {
-                value: temp,
-                writable: true,
-                enumerable: false,
-                configurable: true
-            });
-        }
-    }
-runTestCase(testcase);
+assert(propertyAreCorrect, 'propertyAreCorrect !== true');
+assert(isWritable, 'isWritable !== true');
+assert.sameValue(isEnumerable, false, 'isEnumerable');
+assert(isConfigurable, 'isConfigurable !== true');
diff --git a/test/built-ins/Object/defineProperty/15.2.3.6-4-620.js b/test/built-ins/Object/defineProperty/15.2.3.6-4-620.js
index 8afc75751b2f03ea883b2c7f0ade00e51f373506..e2a9f56f50474435d33d6bbe7a04d3808f011075 100644
--- a/test/built-ins/Object/defineProperty/15.2.3.6-4-620.js
+++ b/test/built-ins/Object/defineProperty/15.2.3.6-4-620.js
@@ -6,17 +6,14 @@ es5id: 15.2.3.6-4-620
 description: >
     ES5 Attributes - all attributes in Array.prototype.reduceRight are
     correct
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
         var desc = Object.getOwnPropertyDescriptor(Array.prototype, "reduceRight");
 
         var propertyAreCorrect = (desc.writable === true && desc.enumerable === false && desc.configurable === true);
 
         var temp = Array.prototype.reduceRight;
 
-        try {
             Array.prototype.reduceRight = "2010";
 
             var isWritable = (Array.prototype.reduceRight === "2010");
@@ -33,14 +30,7 @@ function testcase() {
 
             var isConfigurable = !Array.prototype.hasOwnProperty("reduceRight");
 
-            return propertyAreCorrect && isWritable && !isEnumerable && isConfigurable;
-        } finally {
-            Object.defineProperty(Array.prototype, "reduceRight", {
-                value: temp,
-                writable: true,
-                enumerable: false,
-                configurable: true
-            });
-        }
-    }
-runTestCase(testcase);
+assert(propertyAreCorrect, 'propertyAreCorrect !== true');
+assert(isWritable, 'isWritable !== true');
+assert.sameValue(isEnumerable, false, 'isEnumerable');
+assert(isConfigurable, 'isConfigurable !== true');
diff --git a/test/built-ins/Object/defineProperty/15.2.3.6-4-621.js b/test/built-ins/Object/defineProperty/15.2.3.6-4-621.js
index 27316878087c682fae89d6fee4dd428837e2d28b..b7e2ebf5cbe9294a09027e734ca2f60f4d19b529 100644
--- a/test/built-ins/Object/defineProperty/15.2.3.6-4-621.js
+++ b/test/built-ins/Object/defineProperty/15.2.3.6-4-621.js
@@ -6,17 +6,14 @@ es5id: 15.2.3.6-4-621
 description: >
     ES5 Attributes - all attributes in String.prototype.trim are
     correct
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
         var desc = Object.getOwnPropertyDescriptor(String.prototype, "trim");
 
         var propertyAreCorrect = (desc.writable === true && desc.enumerable === false && desc.configurable === true);
 
         var temp = String.prototype.trim;
 
-        try {
             String.prototype.trim = "2010";
 
             var isWritable = (String.prototype.trim === "2010");
@@ -33,14 +30,7 @@ function testcase() {
 
             var isConfigurable = !String.prototype.hasOwnProperty("trim");
 
-            return propertyAreCorrect && isWritable && !isEnumerable && isConfigurable;
-        } finally {
-            Object.defineProperty(String.prototype, "trim", {
-                value: temp,
-                writable: true,
-                enumerable: false,
-                configurable: true
-            });
-        }
-    }
-runTestCase(testcase);
+assert(propertyAreCorrect, 'propertyAreCorrect !== true');
+assert(isWritable, 'isWritable !== true');
+assert.sameValue(isEnumerable, false, 'isEnumerable');
+assert(isConfigurable, 'isConfigurable !== true');
diff --git a/test/built-ins/Object/defineProperty/15.2.3.6-4-622.js b/test/built-ins/Object/defineProperty/15.2.3.6-4-622.js
index 6ca6f94cef78429da53ddea7c7032b7109239c72..c587d33d4e86cc9d9f1d52a448534724de35b639 100644
--- a/test/built-ins/Object/defineProperty/15.2.3.6-4-622.js
+++ b/test/built-ins/Object/defineProperty/15.2.3.6-4-622.js
@@ -4,17 +4,14 @@
 /*---
 es5id: 15.2.3.6-4-622
 description: ES5 Attributes - all attributes in Date.now are correct
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
         var desc = Object.getOwnPropertyDescriptor(Date, "now");
 
         var propertyAreCorrect = (desc.writable === true && desc.enumerable === false && desc.configurable === true);
 
         var temp = Date.now;
 
-        try {
             Date.now = "2010";
 
             var isWritable = (Date.now === "2010");
@@ -31,14 +28,7 @@ function testcase() {
 
             var isConfigurable = !Date.hasOwnProperty("now");
 
-            return propertyAreCorrect && isWritable && !isEnumerable && isConfigurable;
-        } finally {
-            Object.defineProperty(Date, "now", {
-                value: temp,
-                writable: true,
-                enumerable: false,
-                configurable: true
-            });
-        }
-    }
-runTestCase(testcase);
+assert(propertyAreCorrect, 'propertyAreCorrect !== true');
+assert(isWritable, 'isWritable !== true');
+assert.sameValue(isEnumerable, false, 'isEnumerable');
+assert(isConfigurable, 'isConfigurable !== true');
diff --git a/test/built-ins/Object/defineProperty/15.2.3.6-4-623.js b/test/built-ins/Object/defineProperty/15.2.3.6-4-623.js
index d1374fdaec95a4e21d06849c4422ce645203add8..f96eb0c02e5f18ba8e9ab9c345caebfb8600840b 100644
--- a/test/built-ins/Object/defineProperty/15.2.3.6-4-623.js
+++ b/test/built-ins/Object/defineProperty/15.2.3.6-4-623.js
@@ -6,17 +6,14 @@ es5id: 15.2.3.6-4-623
 description: >
     ES5 Attributes - all attributes in Date.prototype.toISOString are
     correct
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
         var desc = Object.getOwnPropertyDescriptor(Date.prototype, "toISOString");
 
         var propertyAreCorrect = (desc.writable === true && desc.enumerable === false && desc.configurable === true);
 
         var temp = Date.prototype.toISOString;
 
-        try {
             Date.prototype.toISOString = "2010";
 
             var isWritable = (Date.prototype.toISOString === "2010");
@@ -33,14 +30,7 @@ function testcase() {
 
             var isConfigurable = !Date.prototype.hasOwnProperty("toISOString");
 
-            return propertyAreCorrect && isWritable && !isEnumerable && isConfigurable;
-        } finally {
-            Object.defineProperty(Date.prototype, "toISOString", {
-                value: temp,
-                writable: true,
-                enumerable: false,
-                configurable: true
-            });
-        }
-    }
-runTestCase(testcase);
+assert(propertyAreCorrect, 'propertyAreCorrect !== true');
+assert(isWritable, 'isWritable !== true');
+assert.sameValue(isEnumerable, false, 'isEnumerable');
+assert(isConfigurable, 'isConfigurable !== true');
diff --git a/test/built-ins/Object/defineProperty/15.2.3.6-4-624.js b/test/built-ins/Object/defineProperty/15.2.3.6-4-624.js
index c8515ada10dc541b5a83cc04b4769b05c110c11c..5b6abba13f8a59b42da072388533827902522fb8 100644
--- a/test/built-ins/Object/defineProperty/15.2.3.6-4-624.js
+++ b/test/built-ins/Object/defineProperty/15.2.3.6-4-624.js
@@ -6,17 +6,14 @@ es5id: 15.2.3.6-4-624
 description: >
     ES5 Attributes - all attributes in Date.prototype.toJSON are
     correct
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
         var desc = Object.getOwnPropertyDescriptor(Date.prototype, "toJSON");
 
         var propertyAreCorrect = (desc.writable === true && desc.enumerable === false && desc.configurable === true);
 
         var temp = Date.prototype.toJSON;
 
-        try {
             Date.prototype.toJSON = "2010";
 
             var isWritable = (Date.prototype.toJSON === "2010");
@@ -33,14 +30,7 @@ function testcase() {
 
             var isConfigurable = !Date.prototype.hasOwnProperty("toJSON");
 
-            return propertyAreCorrect && isWritable && !isEnumerable && isConfigurable;
-        } finally {
-            Object.defineProperty(Date.prototype, "toJSON", {
-                value: temp,
-                writable: true,
-                enumerable: false,
-                configurable: true
-            });
-        }
-    }
-runTestCase(testcase);
+assert(propertyAreCorrect, 'propertyAreCorrect !== true');
+assert(isWritable, 'isWritable !== true');
+assert.sameValue(isEnumerable, false, 'isEnumerable');
+assert(isConfigurable, 'isConfigurable !== true');
diff --git a/test/built-ins/Object/getOwnPropertyNames/15.2.3.4-2-4.js b/test/built-ins/Object/getOwnPropertyNames/15.2.3.4-2-4.js
index 8401f8ad777997c13dd8ea7be84ade1abed867d3..fd42435c7cd57f8504ac6d12d77adfb7333b41e1 100644
--- a/test/built-ins/Object/getOwnPropertyNames/15.2.3.4-2-4.js
+++ b/test/built-ins/Object/getOwnPropertyNames/15.2.3.4-2-4.js
@@ -6,23 +6,15 @@ es5id: 15.2.3.4-2-4
 description: >
     Object.getOwnPropertyNames - returned array is the standard
     built-in constructor
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
         var oldArray = Array;
         Array = function () {
             throw new Error("invoke customer defined Array!");
         };
 
         var obj = {};
-        try {
+
             var result = Object.getOwnPropertyNames(obj);
-            return Object.prototype.toString.call(result) === "[object Array]";
-        } catch (ex) {
-            return false;
-        } finally {
-            Array = oldArray;
-        }
-    }
-runTestCase(testcase);
+
+assert.sameValue(Object.prototype.toString.call(result), "[object Array]", 'Object.prototype.toString.call(result)');