diff --git a/test/built-ins/Object/defineProperty/15.2.3.6-0-1.js b/test/built-ins/Object/defineProperty/15.2.3.6-0-1.js
index bdf7f21508b84b2737732451d7c1078c0e15ae89..e552666a33a75a08ae1e01d8f4de7b24a414f5ba 100644
--- a/test/built-ins/Object/defineProperty/15.2.3.6-0-1.js
+++ b/test/built-ins/Object/defineProperty/15.2.3.6-0-1.js
@@ -4,13 +4,8 @@
 /*---
 es5id: 15.2.3.6-0-1
 description: Object.defineProperty must exist as a function
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
   var f = Object.defineProperty;
-  if (typeof(f) === "function") {
-    return true;
-  }
- }
-runTestCase(testcase);
+
+assert.sameValue(typeof(f), "function", 'typeof(f)');
diff --git a/test/built-ins/Object/defineProperty/15.2.3.6-0-2.js b/test/built-ins/Object/defineProperty/15.2.3.6-0-2.js
index 7926f2607dfb68e5bb8f625645efd92b4575d924..084a00bcbd158226b18ccac8adddc79dca011588 100644
--- a/test/built-ins/Object/defineProperty/15.2.3.6-0-2.js
+++ b/test/built-ins/Object/defineProperty/15.2.3.6-0-2.js
@@ -4,12 +4,6 @@
 /*---
 es5id: 15.2.3.6-0-2
 description: Object.defineProperty must exist as a function taking 3 parameters
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
-  if (Object.defineProperty.length === 3) {
-    return true;
-  }
- }
-runTestCase(testcase);
+assert.sameValue(Object.defineProperty.length, 3, 'Object.defineProperty.length');
diff --git a/test/built-ins/Object/defineProperty/15.2.3.6-2-1.js b/test/built-ins/Object/defineProperty/15.2.3.6-2-1.js
index a0631bb5ebdc20b9f5b0fc405ca8521277fac67a..7858e89077235bca87c5b87cd4c464dcf70ba622 100644
--- a/test/built-ins/Object/defineProperty/15.2.3.6-2-1.js
+++ b/test/built-ins/Object/defineProperty/15.2.3.6-2-1.js
@@ -6,14 +6,9 @@ es5id: 15.2.3.6-2-1
 description: >
     Object.defineProperty - argument 'P' is undefined that converts to
     string 'undefined'
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
         var obj = {};
         Object.defineProperty(obj, undefined, {});
 
-        return obj.hasOwnProperty("undefined");
-
-    }
-runTestCase(testcase);
+assert(obj.hasOwnProperty("undefined"), 'obj.hasOwnProperty("undefined") !== true');
diff --git a/test/built-ins/Object/defineProperty/15.2.3.6-2-10.js b/test/built-ins/Object/defineProperty/15.2.3.6-2-10.js
index 4ff49adc7123adf97dfcfb26d217fd264d64ff93..6c8c201fe77d7c36a59a4c1001fb4bfb32f6e2dd 100644
--- a/test/built-ins/Object/defineProperty/15.2.3.6-2-10.js
+++ b/test/built-ins/Object/defineProperty/15.2.3.6-2-10.js
@@ -6,14 +6,9 @@ es5id: 15.2.3.6-2-10
 description: >
     Object.defineProperty - argument 'P' is a number that converts to
     a string (value is a negative number)
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
         var obj = {};
         Object.defineProperty(obj, -20, {});
 
-        return obj.hasOwnProperty("-20");
-
-    }
-runTestCase(testcase);
+assert(obj.hasOwnProperty("-20"), 'obj.hasOwnProperty("-20") !== true');
diff --git a/test/built-ins/Object/defineProperty/15.2.3.6-2-11.js b/test/built-ins/Object/defineProperty/15.2.3.6-2-11.js
index c8fe68d119c94e4c9ba95c63e6b5d2e491e02d69..bfc039d8499dccfe936441b11dfb6c0928fdca5f 100644
--- a/test/built-ins/Object/defineProperty/15.2.3.6-2-11.js
+++ b/test/built-ins/Object/defineProperty/15.2.3.6-2-11.js
@@ -6,14 +6,9 @@ es5id: 15.2.3.6-2-11
 description: >
     Object.defineProperty - argument 'P' is a number that converts to
     a string (value is Infinity)
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
         var obj = {};
         Object.defineProperty(obj, Infinity, {});
 
-        return obj.hasOwnProperty("Infinity");
-
-    }
-runTestCase(testcase);
+assert(obj.hasOwnProperty("Infinity"), 'obj.hasOwnProperty("Infinity") !== true');
diff --git a/test/built-ins/Object/defineProperty/15.2.3.6-2-12.js b/test/built-ins/Object/defineProperty/15.2.3.6-2-12.js
index 2ed69107c212e53e0fb6435b8dec6f70e4ee19ec..63ef4f2542bc564b53a6fd8e20adf595841e0a2b 100644
--- a/test/built-ins/Object/defineProperty/15.2.3.6-2-12.js
+++ b/test/built-ins/Object/defineProperty/15.2.3.6-2-12.js
@@ -6,14 +6,9 @@ es5id: 15.2.3.6-2-12
 description: >
     Object.defineProperty - argument 'P' is a number that converts to
     a string (value is +Infinity)
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
         var obj = {};
         Object.defineProperty(obj, +Infinity, {});
 
-        return obj.hasOwnProperty("Infinity");
-
-    }
-runTestCase(testcase);
+assert(obj.hasOwnProperty("Infinity"), 'obj.hasOwnProperty("Infinity") !== true');
diff --git a/test/built-ins/Object/defineProperty/15.2.3.6-2-13.js b/test/built-ins/Object/defineProperty/15.2.3.6-2-13.js
index 6907e660631dbb69cd4c70ef47d6d92a634e4771..230e0f1c77a216adea631dc9d8982675c67680af 100644
--- a/test/built-ins/Object/defineProperty/15.2.3.6-2-13.js
+++ b/test/built-ins/Object/defineProperty/15.2.3.6-2-13.js
@@ -6,14 +6,9 @@ es5id: 15.2.3.6-2-13
 description: >
     Object.defineProperty - argument 'P' is a number that converts to
     a string (value is -Infinity)
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
         var obj = {};
         Object.defineProperty(obj, -Infinity, {});
 
-        return obj.hasOwnProperty("-Infinity");
-
-    }
-runTestCase(testcase);
+assert(obj.hasOwnProperty("-Infinity"), 'obj.hasOwnProperty("-Infinity") !== true');
diff --git a/test/built-ins/Object/defineProperty/15.2.3.6-2-14.js b/test/built-ins/Object/defineProperty/15.2.3.6-2-14.js
index 8a3a9f98a400f204f053b8f7889d6ce26016f8ab..5283705b2751731765637c8dabaafc115d330351 100644
--- a/test/built-ins/Object/defineProperty/15.2.3.6-2-14.js
+++ b/test/built-ins/Object/defineProperty/15.2.3.6-2-14.js
@@ -6,14 +6,9 @@ es5id: 15.2.3.6-2-14
 description: >
     Object.defineProperty - argument 'P' is a number that converts to
     a string (value is 1(following 20 zeros))
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
         var obj = {};
         Object.defineProperty(obj, 100000000000000000000, {});
 
-        return obj.hasOwnProperty("100000000000000000000");
-
-    }
-runTestCase(testcase);
+assert(obj.hasOwnProperty("100000000000000000000"), 'obj.hasOwnProperty("100000000000000000000") !== true');
diff --git a/test/built-ins/Object/defineProperty/15.2.3.6-2-15.js b/test/built-ins/Object/defineProperty/15.2.3.6-2-15.js
index 4bdbcf11a788d2f22a627805ac662db156b29071..e6dbae77287657f6ba09c032157c1124f9565baf 100644
--- a/test/built-ins/Object/defineProperty/15.2.3.6-2-15.js
+++ b/test/built-ins/Object/defineProperty/15.2.3.6-2-15.js
@@ -6,14 +6,9 @@ es5id: 15.2.3.6-2-15
 description: >
     Object.defineProperty - argument 'P' is a number that converts to
     a string (value is 1(following 21 zeros))
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
         var obj = {};
         Object.defineProperty(obj, 1000000000000000000000, {});
 
-        return obj.hasOwnProperty("1e+21");
-
-    }
-runTestCase(testcase);
+assert(obj.hasOwnProperty("1e+21"), 'obj.hasOwnProperty("1e+21") !== true');
diff --git a/test/built-ins/Object/defineProperty/15.2.3.6-2-16.js b/test/built-ins/Object/defineProperty/15.2.3.6-2-16.js
index 241268244597d2acb86a23a1465e6b30ecb2bc3f..e3a21b9726ddef8d643966eadbc867055327f9a3 100644
--- a/test/built-ins/Object/defineProperty/15.2.3.6-2-16.js
+++ b/test/built-ins/Object/defineProperty/15.2.3.6-2-16.js
@@ -6,14 +6,9 @@ es5id: 15.2.3.6-2-16
 description: >
     Object.defineProperty - argument 'P' is a number that converts to
     a string (value is 1(following 22 zeros))
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
         var obj = {};
         Object.defineProperty(obj, 10000000000000000000000, {});
 
-        return obj.hasOwnProperty("1e+22");
-
-    }
-runTestCase(testcase);
+assert(obj.hasOwnProperty("1e+22"), 'obj.hasOwnProperty("1e+22") !== true');
diff --git a/test/built-ins/Object/defineProperty/15.2.3.6-2-17-1.js b/test/built-ins/Object/defineProperty/15.2.3.6-2-17-1.js
index cfe656f93aefdc1950622890ac355c7e1dec5ddd..2a57a5d35f49ca72afba3c10f765cf629420065a 100644
--- a/test/built-ins/Object/defineProperty/15.2.3.6-2-17-1.js
+++ b/test/built-ins/Object/defineProperty/15.2.3.6-2-17-1.js
@@ -6,14 +6,9 @@ es5id: 15.2.3.6-2-17-1
 description: >
     Object.defineProperty - argument 'P' is a number that converts to
     a string (value is 1)
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
         var obj = {};
         Object.defineProperty(obj, 1, {});
 
-        return obj.hasOwnProperty("1");
-
-    }
-runTestCase(testcase);
+assert(obj.hasOwnProperty("1"), 'obj.hasOwnProperty("1") !== true');
diff --git a/test/built-ins/Object/defineProperty/15.2.3.6-2-17.js b/test/built-ins/Object/defineProperty/15.2.3.6-2-17.js
index bda543e71b1153c9f500e34446221758499afe26..9e8bb2ddb8821c412cfcc4aa4a79cd96010020a9 100644
--- a/test/built-ins/Object/defineProperty/15.2.3.6-2-17.js
+++ b/test/built-ins/Object/defineProperty/15.2.3.6-2-17.js
@@ -6,14 +6,9 @@ es5id: 15.2.3.6-2-17
 description: >
     Object.defineProperty - argument 'P' is a number that converts to
     a string (value is 1e+20)
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
         var obj = {};
         Object.defineProperty(obj, 1e+20, {});
 
-        return obj.hasOwnProperty("100000000000000000000");
-
-    }
-runTestCase(testcase);
+assert(obj.hasOwnProperty("100000000000000000000"), 'obj.hasOwnProperty("100000000000000000000") !== true');
diff --git a/test/built-ins/Object/defineProperty/15.2.3.6-2-18.js b/test/built-ins/Object/defineProperty/15.2.3.6-2-18.js
index 148e83e8efb358f86ed92d99587c744fe9f43330..0dbaf2e38c28f675319af044a5a34483ed416993 100644
--- a/test/built-ins/Object/defineProperty/15.2.3.6-2-18.js
+++ b/test/built-ins/Object/defineProperty/15.2.3.6-2-18.js
@@ -6,14 +6,9 @@ es5id: 15.2.3.6-2-18
 description: >
     Object.defineProperty - argument 'P' is a number that converts to
     string (value is 1e+21)
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
         var obj = {};
         Object.defineProperty(obj, 1e+21, {});
 
-        return obj.hasOwnProperty("1e+21");
-
-    }
-runTestCase(testcase);
+assert(obj.hasOwnProperty("1e+21"), 'obj.hasOwnProperty("1e+21") !== true');
diff --git a/test/built-ins/Object/defineProperty/15.2.3.6-2-19.js b/test/built-ins/Object/defineProperty/15.2.3.6-2-19.js
index 5c7af69e0947b500a55f6c5a9bf0e2072897bfd4..bda77ab5e3c8b563e09f4c9d1e172558557a5f46 100644
--- a/test/built-ins/Object/defineProperty/15.2.3.6-2-19.js
+++ b/test/built-ins/Object/defineProperty/15.2.3.6-2-19.js
@@ -6,14 +6,9 @@ es5id: 15.2.3.6-2-19
 description: >
     Object.defineProperty - argument 'P' is a number that converts to
     string (value is 1e+22)
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
         var obj = {};
         Object.defineProperty(obj, 1e+22, {});
 
-        return obj.hasOwnProperty("1e+22");
-
-    }
-runTestCase(testcase);
+assert(obj.hasOwnProperty("1e+22"), 'obj.hasOwnProperty("1e+22") !== true');
diff --git a/test/built-ins/Object/defineProperty/15.2.3.6-2-2.js b/test/built-ins/Object/defineProperty/15.2.3.6-2-2.js
index eef564186c0ecef631b3a720f7399d79de3818c6..31d6fb887e76c35ca105f711b3da3854e47dd000 100644
--- a/test/built-ins/Object/defineProperty/15.2.3.6-2-2.js
+++ b/test/built-ins/Object/defineProperty/15.2.3.6-2-2.js
@@ -6,14 +6,9 @@ es5id: 15.2.3.6-2-2
 description: >
     Object.defineProperty - argument 'P' is null that converts to
     string 'null'
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
         var obj = {};
         Object.defineProperty(obj, null, {});
 
-        return obj.hasOwnProperty("null");
-
-    }
-runTestCase(testcase);
+assert(obj.hasOwnProperty("null"), 'obj.hasOwnProperty("null") !== true');
diff --git a/test/built-ins/Object/defineProperty/15.2.3.6-2-20.js b/test/built-ins/Object/defineProperty/15.2.3.6-2-20.js
index 82adc1a277801d71c5c9c13fbbb9d040e7103838..06d8aa82a3a17d223e17a96d2a919a58c7fd9e44 100644
--- a/test/built-ins/Object/defineProperty/15.2.3.6-2-20.js
+++ b/test/built-ins/Object/defineProperty/15.2.3.6-2-20.js
@@ -6,14 +6,9 @@ es5id: 15.2.3.6-2-20
 description: >
     Object.defineProperty - argument 'P' is a number that converts to
     a string (value is 0.000001)
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
         var obj = {};
         Object.defineProperty(obj, 0.000001, {});
 
-        return obj.hasOwnProperty("0.000001");
-
-    }
-runTestCase(testcase);
+assert(obj.hasOwnProperty("0.000001"), 'obj.hasOwnProperty("0.000001") !== true');
diff --git a/test/built-ins/Object/defineProperty/15.2.3.6-2-21.js b/test/built-ins/Object/defineProperty/15.2.3.6-2-21.js
index 27530001475cd7fd07047a36bae676925f3cba00..287d8c1dd536124e4bdb518ec2fe434acd680789 100644
--- a/test/built-ins/Object/defineProperty/15.2.3.6-2-21.js
+++ b/test/built-ins/Object/defineProperty/15.2.3.6-2-21.js
@@ -6,14 +6,9 @@ es5id: 15.2.3.6-2-21
 description: >
     Object.defineProperty - argument 'P' is a number that converts to
     a string (value is 0.0000001)
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
         var obj = {};
         Object.defineProperty(obj, 0.0000001, {});
 
-        return obj.hasOwnProperty("1e-7");
-
-    }
-runTestCase(testcase);
+assert(obj.hasOwnProperty("1e-7"), 'obj.hasOwnProperty("1e-7") !== true');
diff --git a/test/built-ins/Object/defineProperty/15.2.3.6-2-22.js b/test/built-ins/Object/defineProperty/15.2.3.6-2-22.js
index 65e0add30bbe46ea54a709bafd5d5cf5c7e8a76a..e803f48def3ec185b04c2aba41884d23fed9a029 100644
--- a/test/built-ins/Object/defineProperty/15.2.3.6-2-22.js
+++ b/test/built-ins/Object/defineProperty/15.2.3.6-2-22.js
@@ -6,14 +6,9 @@ es5id: 15.2.3.6-2-22
 description: >
     Object.defineProperty - argument 'P' is a number that converts to
     a string (value is 0.00000001)
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
         var obj = {};
         Object.defineProperty(obj, 0.00000001, {});
 
-        return obj.hasOwnProperty("1e-8");
-
-    }
-runTestCase(testcase);
+assert(obj.hasOwnProperty("1e-8"), 'obj.hasOwnProperty("1e-8") !== true');
diff --git a/test/built-ins/Object/defineProperty/15.2.3.6-2-23.js b/test/built-ins/Object/defineProperty/15.2.3.6-2-23.js
index c558ecfd631ebc3c4e5023afaaa3514f54585c8f..3839f960ddc3bf88a7635996eb11722df875817e 100644
--- a/test/built-ins/Object/defineProperty/15.2.3.6-2-23.js
+++ b/test/built-ins/Object/defineProperty/15.2.3.6-2-23.js
@@ -6,14 +6,9 @@ es5id: 15.2.3.6-2-23
 description: >
     Object.defineProperty - argument 'P' is a number that converts to
     a string (value is 1e-7)
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
         var obj = {};
         Object.defineProperty(obj, 1e-7, {});
 
-        return obj.hasOwnProperty("1e-7");
-
-    }
-runTestCase(testcase);
+assert(obj.hasOwnProperty("1e-7"), 'obj.hasOwnProperty("1e-7") !== true');
diff --git a/test/built-ins/Object/defineProperty/15.2.3.6-2-24.js b/test/built-ins/Object/defineProperty/15.2.3.6-2-24.js
index da8334bf01f9ba30363031bd10e4c804952a8a09..da1d927b5260028f39bc4409ced83102075dc50d 100644
--- a/test/built-ins/Object/defineProperty/15.2.3.6-2-24.js
+++ b/test/built-ins/Object/defineProperty/15.2.3.6-2-24.js
@@ -6,14 +6,9 @@ es5id: 15.2.3.6-2-24
 description: >
     Object.defineProperty - argument 'P' is a number that converts to
     a string (value is 1e-6)
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
         var obj = {};
         Object.defineProperty(obj, 1e-6, {});
 
-        return obj.hasOwnProperty("0.000001");
-
-    }
-runTestCase(testcase);
+assert(obj.hasOwnProperty("0.000001"), 'obj.hasOwnProperty("0.000001") !== true');
diff --git a/test/built-ins/Object/defineProperty/15.2.3.6-2-25.js b/test/built-ins/Object/defineProperty/15.2.3.6-2-25.js
index 9c9e01d7d9e59641a81599b96739b5e00a795337..740c0e3dd63f589f9df5a2f7fe7c88038b1a8b1f 100644
--- a/test/built-ins/Object/defineProperty/15.2.3.6-2-25.js
+++ b/test/built-ins/Object/defineProperty/15.2.3.6-2-25.js
@@ -6,14 +6,9 @@ es5id: 15.2.3.6-2-25
 description: >
     Object.defineProperty - argument 'P' is a number that converts to
     a string (value is 1e-5)
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
         var obj = {};
         Object.defineProperty(obj, 1e-5, {});
 
-        return obj.hasOwnProperty("0.00001");
-
-    }
-runTestCase(testcase);
+assert(obj.hasOwnProperty("0.00001"), 'obj.hasOwnProperty("0.00001") !== true');
diff --git a/test/built-ins/Object/defineProperty/15.2.3.6-2-26.js b/test/built-ins/Object/defineProperty/15.2.3.6-2-26.js
index 074dee6a29aa82adccc2b05a0abd966691632dfe..e514f84ac835fed583307610ba0cc86f0742300d 100644
--- a/test/built-ins/Object/defineProperty/15.2.3.6-2-26.js
+++ b/test/built-ins/Object/defineProperty/15.2.3.6-2-26.js
@@ -6,14 +6,9 @@ es5id: 15.2.3.6-2-26
 description: >
     Object.defineProperty - argument 'P' is an integer that converts
     to a string (value is 123)
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
         var obj = {};
         Object.defineProperty(obj, 123, {});
 
-        return obj.hasOwnProperty("123");
-
-    }
-runTestCase(testcase);
+assert(obj.hasOwnProperty("123"), 'obj.hasOwnProperty("123") !== true');
diff --git a/test/built-ins/Object/defineProperty/15.2.3.6-2-27.js b/test/built-ins/Object/defineProperty/15.2.3.6-2-27.js
index d231b27037312bb8c0ac1d309f50a6e0f2c61184..889ff4480c137999d4b7b7201793775b1c668b46 100644
--- a/test/built-ins/Object/defineProperty/15.2.3.6-2-27.js
+++ b/test/built-ins/Object/defineProperty/15.2.3.6-2-27.js
@@ -6,14 +6,9 @@ es5id: 15.2.3.6-2-27
 description: >
     Object.defineProperty - argument 'P' is a decimal that converts to
     a string (value is 123.456)
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
         var obj = {};
         Object.defineProperty(obj, 123.456, {});
 
-        return obj.hasOwnProperty("123.456");
-
-    }
-runTestCase(testcase);
+assert(obj.hasOwnProperty("123.456"), 'obj.hasOwnProperty("123.456") !== true');
diff --git a/test/built-ins/Object/defineProperty/15.2.3.6-2-28.js b/test/built-ins/Object/defineProperty/15.2.3.6-2-28.js
index 44c7dc14c3830755b46fc2f907acb6002be8ca03..ac3077dbf1a97ac531720afce1198dacc7e2f00e 100644
--- a/test/built-ins/Object/defineProperty/15.2.3.6-2-28.js
+++ b/test/built-ins/Object/defineProperty/15.2.3.6-2-28.js
@@ -6,14 +6,9 @@ es5id: 15.2.3.6-2-28
 description: >
     Object.defineProperty - argument 'P' is a number that converts to
     a string (value is 1(following 19 zeros).1)
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
         var obj = {};
         Object.defineProperty(obj, 10000000000000000000.1, {});
 
-        return obj.hasOwnProperty("10000000000000000000");
-
-    }
-runTestCase(testcase);
+assert(obj.hasOwnProperty("10000000000000000000"), 'obj.hasOwnProperty("10000000000000000000") !== true');
diff --git a/test/built-ins/Object/defineProperty/15.2.3.6-2-29.js b/test/built-ins/Object/defineProperty/15.2.3.6-2-29.js
index af37d9a68be3ff219a9134db1d5e5a91d12959e1..c4cd44599e7ff65e92e1206a84a7069a27c9940b 100644
--- a/test/built-ins/Object/defineProperty/15.2.3.6-2-29.js
+++ b/test/built-ins/Object/defineProperty/15.2.3.6-2-29.js
@@ -6,14 +6,9 @@ es5id: 15.2.3.6-2-29
 description: >
     Object.defineProperty - argument 'P' is a number that converts to
     a string (value is 1(following 20 zeros).1)
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
         var obj = {};
         Object.defineProperty(obj, 100000000000000000000.1, {});
 
-        return obj.hasOwnProperty("100000000000000000000");
-
-    }
-runTestCase(testcase);
+assert(obj.hasOwnProperty("100000000000000000000"), 'obj.hasOwnProperty("100000000000000000000") !== true');
diff --git a/test/built-ins/Object/defineProperty/15.2.3.6-2-3.js b/test/built-ins/Object/defineProperty/15.2.3.6-2-3.js
index d4618f927ccd7184e377495b814e3c9be066103a..076c40166b252e920c739fb4bf22dbe244821027 100644
--- a/test/built-ins/Object/defineProperty/15.2.3.6-2-3.js
+++ b/test/built-ins/Object/defineProperty/15.2.3.6-2-3.js
@@ -6,14 +6,9 @@ es5id: 15.2.3.6-2-3
 description: >
     Object.defineProperty - argument 'P' is a boolean whose value is
     false
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
         var obj = {};
         Object.defineProperty(obj, false, {});
 
-        return obj.hasOwnProperty("false");
-
-    }
-runTestCase(testcase);
+assert(obj.hasOwnProperty("false"), 'obj.hasOwnProperty("false") !== true');
diff --git a/test/built-ins/Object/defineProperty/15.2.3.6-2-30.js b/test/built-ins/Object/defineProperty/15.2.3.6-2-30.js
index 50ac0b632cc8e346c70dc36a53eb1834782661c9..774bb3305ba7c2fc5ab541faccfa7b3806b82c9d 100644
--- a/test/built-ins/Object/defineProperty/15.2.3.6-2-30.js
+++ b/test/built-ins/Object/defineProperty/15.2.3.6-2-30.js
@@ -6,14 +6,9 @@ es5id: 15.2.3.6-2-30
 description: >
     Object.defineProperty - argument 'P' is a number that converts to
     a string (value is 1(following 21 zeros).1)
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
         var obj = {};
         Object.defineProperty(obj, 1000000000000000000000.1, {});
 
-        return obj.hasOwnProperty("1e+21");
-
-    }
-runTestCase(testcase);
+assert(obj.hasOwnProperty("1e+21"), 'obj.hasOwnProperty("1e+21") !== true');
diff --git a/test/built-ins/Object/defineProperty/15.2.3.6-2-31.js b/test/built-ins/Object/defineProperty/15.2.3.6-2-31.js
index 39cf4a4ab9c341e69c795c36517908b1e872cb9b..59dd29568f551a6e4e6402e888872e15ea3e7b40 100644
--- a/test/built-ins/Object/defineProperty/15.2.3.6-2-31.js
+++ b/test/built-ins/Object/defineProperty/15.2.3.6-2-31.js
@@ -6,14 +6,9 @@ es5id: 15.2.3.6-2-31
 description: >
     Object.defineProperty - argument 'P' is a number that converts to
     a string (value is 1(following 22 zeros).1)
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
         var obj = {};
         Object.defineProperty(obj, 10000000000000000000000.1, {});
 
-        return obj.hasOwnProperty("1e+22");
-
-    }
-runTestCase(testcase);
+assert(obj.hasOwnProperty("1e+22"), 'obj.hasOwnProperty("1e+22") !== true');
diff --git a/test/built-ins/Object/defineProperty/15.2.3.6-2-32.js b/test/built-ins/Object/defineProperty/15.2.3.6-2-32.js
index 84bde1084c7bd7a686ae1ae7817c6ad1c5e5e01b..fee7a110904b2abda17b8945ba2d8b048f632248 100644
--- a/test/built-ins/Object/defineProperty/15.2.3.6-2-32.js
+++ b/test/built-ins/Object/defineProperty/15.2.3.6-2-32.js
@@ -6,14 +6,9 @@ es5id: 15.2.3.6-2-32
 description: >
     Object.defineProperty - argument 'P' is a number that converts to
     a string (value is 123.1234567)
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
         var obj = {};
         Object.defineProperty(obj, 123.1234567, {});
 
-        return obj.hasOwnProperty("123.1234567");
-
-    }
-runTestCase(testcase);
+assert(obj.hasOwnProperty("123.1234567"), 'obj.hasOwnProperty("123.1234567") !== true');
diff --git a/test/built-ins/Object/defineProperty/15.2.3.6-2-33.js b/test/built-ins/Object/defineProperty/15.2.3.6-2-33.js
index ecc6eb4758136383a67509d61075137da285f087..4e62e4a1674fe881fcd787ba86b1cc27da2157e3 100644
--- a/test/built-ins/Object/defineProperty/15.2.3.6-2-33.js
+++ b/test/built-ins/Object/defineProperty/15.2.3.6-2-33.js
@@ -4,14 +4,9 @@
 /*---
 es5id: 15.2.3.6-2-33
 description: Object.defineProperty - argument 'P' is applied to an empty string
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
         var obj = {};
         Object.defineProperty(obj, "", {});
 
-        return obj.hasOwnProperty("");
-
-    }
-runTestCase(testcase);
+assert(obj.hasOwnProperty(""), 'obj.hasOwnProperty("") !== true');
diff --git a/test/built-ins/Object/defineProperty/15.2.3.6-2-34.js b/test/built-ins/Object/defineProperty/15.2.3.6-2-34.js
index 90842848e296cefbe46ebaa70f4584f57d355bff..c8d127e5d8404beec9015453ce9b5eb8d11d2b39 100644
--- a/test/built-ins/Object/defineProperty/15.2.3.6-2-34.js
+++ b/test/built-ins/Object/defineProperty/15.2.3.6-2-34.js
@@ -4,14 +4,9 @@
 /*---
 es5id: 15.2.3.6-2-34
 description: Object.defineProperty - argument 'P' is applied to string 'AB  \cd'
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
         var obj = {};
         Object.defineProperty(obj, "AB\n\\cd", {});
 
-        return obj.hasOwnProperty("AB\n\\cd");
-
-    }
-runTestCase(testcase);
+assert(obj.hasOwnProperty("AB\n\\cd"), 'obj.hasOwnProperty("AB\n\\cd") !== true');
diff --git a/test/built-ins/Object/defineProperty/15.2.3.6-2-35.js b/test/built-ins/Object/defineProperty/15.2.3.6-2-35.js
index c5723270db9b3c896a2da5b158300e8a74133556..85150e3fccefab9af2e3dffb7e70eba159357e0d 100644
--- a/test/built-ins/Object/defineProperty/15.2.3.6-2-35.js
+++ b/test/built-ins/Object/defineProperty/15.2.3.6-2-35.js
@@ -6,14 +6,9 @@ es5id: 15.2.3.6-2-35
 description: >
     Object.defineProperty - argument 'P' is applied to string
     'undefined'
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
         var obj = {};
         Object.defineProperty(obj, "undefined", {});
 
-        return obj.hasOwnProperty("undefined");
-
-    }
-runTestCase(testcase);
+assert(obj.hasOwnProperty("undefined"), 'obj.hasOwnProperty("undefined") !== true');
diff --git a/test/built-ins/Object/defineProperty/15.2.3.6-2-36.js b/test/built-ins/Object/defineProperty/15.2.3.6-2-36.js
index b6d89dc4df0eb542e41f49c31623baf34a4f44de..1e63f2334d71057ab3cc1e49af2707790d92c6a5 100644
--- a/test/built-ins/Object/defineProperty/15.2.3.6-2-36.js
+++ b/test/built-ins/Object/defineProperty/15.2.3.6-2-36.js
@@ -4,14 +4,9 @@
 /*---
 es5id: 15.2.3.6-2-36
 description: Object.defineProperty - argument 'P' is applied to string 'null'
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
         var obj = {};
         Object.defineProperty(obj, "null", {});
 
-        return obj.hasOwnProperty("null");
-
-    }
-runTestCase(testcase);
+assert(obj.hasOwnProperty("null"), 'obj.hasOwnProperty("null") !== true');
diff --git a/test/built-ins/Object/defineProperty/15.2.3.6-2-37.js b/test/built-ins/Object/defineProperty/15.2.3.6-2-37.js
index 0887d709344c652c1a170eb130a48b584cc3cafd..92fae11cdc99fa2ccecf4d0ed504a42d7088ea20 100644
--- a/test/built-ins/Object/defineProperty/15.2.3.6-2-37.js
+++ b/test/built-ins/Object/defineProperty/15.2.3.6-2-37.js
@@ -6,14 +6,9 @@ es5id: 15.2.3.6-2-37
 description: >
     Object.defineProperty - argument 'P' is applied to string
     '123αβπcd'
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
         var obj = {};
         Object.defineProperty(obj, "123αβπcd", {});
 
-        return obj.hasOwnProperty("123αβπcd");
-
-    }
-runTestCase(testcase);
+assert(obj.hasOwnProperty("123αβπcd"), 'obj.hasOwnProperty("123αβπcd") !== true');
diff --git a/test/built-ins/Object/defineProperty/15.2.3.6-2-38.js b/test/built-ins/Object/defineProperty/15.2.3.6-2-38.js
index 51bcb504da0502b3aba601908dd095084aa9e9e2..97470527ad7bf3597001faaba8168641ce722652 100644
--- a/test/built-ins/Object/defineProperty/15.2.3.6-2-38.js
+++ b/test/built-ins/Object/defineProperty/15.2.3.6-2-38.js
@@ -4,14 +4,9 @@
 /*---
 es5id: 15.2.3.6-2-38
 description: Object.defineProperty - argument 'P' is applied to string '1'
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
         var obj = {};
         Object.defineProperty(obj, "1", {});
 
-        return obj.hasOwnProperty("1");
-
-    }
-runTestCase(testcase);
+assert(obj.hasOwnProperty("1"), 'obj.hasOwnProperty("1") !== true');
diff --git a/test/built-ins/Object/defineProperty/15.2.3.6-2-39.js b/test/built-ins/Object/defineProperty/15.2.3.6-2-39.js
index abcb87224fea87e412ea80b67e8fb9b8612e38ac..37a927863cdf353fd300fd27e675fa57dc3a693a 100644
--- a/test/built-ins/Object/defineProperty/15.2.3.6-2-39.js
+++ b/test/built-ins/Object/defineProperty/15.2.3.6-2-39.js
@@ -6,14 +6,9 @@ es5id: 15.2.3.6-2-39
 description: >
     Object.defineProperty - argument 'P' is an array that converts to
     a string
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
         var obj = {};
         Object.defineProperty(obj, [1, 2], {});
 
-        return obj.hasOwnProperty("1,2");
-
-    }
-runTestCase(testcase);
+assert(obj.hasOwnProperty("1,2"), 'obj.hasOwnProperty("1,2") !== true');
diff --git a/test/built-ins/Object/defineProperty/15.2.3.6-2-4.js b/test/built-ins/Object/defineProperty/15.2.3.6-2-4.js
index 0e88d976be22bcbc4471ea20250a23af35bf50f0..5089fa099b571d100e857d0705b32393ab5548b7 100644
--- a/test/built-ins/Object/defineProperty/15.2.3.6-2-4.js
+++ b/test/built-ins/Object/defineProperty/15.2.3.6-2-4.js
@@ -6,14 +6,9 @@ es5id: 15.2.3.6-2-4
 description: >
     Object.defineProperty - argument 'P' is a boolean whose value is
     true
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
         var obj = {};
         Object.defineProperty(obj, true, {});
 
-        return obj.hasOwnProperty("true");
-
-    }
-runTestCase(testcase);
+assert(obj.hasOwnProperty("true"), 'obj.hasOwnProperty("true") !== true');
diff --git a/test/built-ins/Object/defineProperty/15.2.3.6-2-40.js b/test/built-ins/Object/defineProperty/15.2.3.6-2-40.js
index 7fe366ed10334d4a4b0e667674e0c9dc85e0b92b..af780b296e34f9a725b4db6306db28da31f8a6c9 100644
--- a/test/built-ins/Object/defineProperty/15.2.3.6-2-40.js
+++ b/test/built-ins/Object/defineProperty/15.2.3.6-2-40.js
@@ -6,14 +6,9 @@ es5id: 15.2.3.6-2-40
 description: >
     Object.defineProperty - argument 'P' is a String Object that
     converts to a string
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
         var obj = {};
         Object.defineProperty(obj, new String("Hello"), {});
 
-        return obj.hasOwnProperty("Hello");
-
-    }
-runTestCase(testcase);
+assert(obj.hasOwnProperty("Hello"), 'obj.hasOwnProperty("Hello") !== true');
diff --git a/test/built-ins/Object/defineProperty/15.2.3.6-2-41.js b/test/built-ins/Object/defineProperty/15.2.3.6-2-41.js
index 6df269264471d1863e4a6e542c4a4eec2281bc93..dcfcdc5d9f906b23ac711096b3e89c02041ec233 100644
--- a/test/built-ins/Object/defineProperty/15.2.3.6-2-41.js
+++ b/test/built-ins/Object/defineProperty/15.2.3.6-2-41.js
@@ -6,14 +6,9 @@ es5id: 15.2.3.6-2-41
 description: >
     Object.defineProperty - argument 'P' is a Boolean Object that
     converts to a string
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
         var obj = {};
         Object.defineProperty(obj, new Boolean(false), {});
 
-        return obj.hasOwnProperty("false");
-
-    }
-runTestCase(testcase);
+assert(obj.hasOwnProperty("false"), 'obj.hasOwnProperty("false") !== true');
diff --git a/test/built-ins/Object/defineProperty/15.2.3.6-2-42.js b/test/built-ins/Object/defineProperty/15.2.3.6-2-42.js
index d6ecd16e775b916a7e6011bc06d7193f0932ac36..f2eab5c8b88967260d0543a2e6c8c8ad9c14a533 100644
--- a/test/built-ins/Object/defineProperty/15.2.3.6-2-42.js
+++ b/test/built-ins/Object/defineProperty/15.2.3.6-2-42.js
@@ -6,14 +6,9 @@ es5id: 15.2.3.6-2-42
 description: >
     Object.defineProperty - argument 'P' is a Number Object that
     converts to a string
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
         var obj = {};
         Object.defineProperty(obj, new Number(123), {});
 
-        return obj.hasOwnProperty("123");
-
-    }
-runTestCase(testcase);
+assert(obj.hasOwnProperty("123"), 'obj.hasOwnProperty("123") !== true');
diff --git a/test/built-ins/Object/defineProperty/15.2.3.6-2-43.js b/test/built-ins/Object/defineProperty/15.2.3.6-2-43.js
index bd37401e8b636d0f67097d91e47c75c3a8bd73e4..699492a0b9890d59b3011415b0a1a2f5885d7c48 100644
--- a/test/built-ins/Object/defineProperty/15.2.3.6-2-43.js
+++ b/test/built-ins/Object/defineProperty/15.2.3.6-2-43.js
@@ -6,10 +6,8 @@ es5id: 15.2.3.6-2-43
 description: >
     Object.defineProperty - argument 'P' is an object that has an own
     toString method
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
         var obj = {};
 
         var ownProp = {
@@ -20,7 +18,4 @@ function testcase() {
 
         Object.defineProperty(obj, ownProp, {});
 
-        return obj.hasOwnProperty("abc");
-
-    }
-runTestCase(testcase);
+assert(obj.hasOwnProperty("abc"), 'obj.hasOwnProperty("abc") !== true');
diff --git a/test/built-ins/Object/defineProperty/15.2.3.6-2-44.js b/test/built-ins/Object/defineProperty/15.2.3.6-2-44.js
index 7d794be11a5b38f9e938811bb898699f82b7376c..ce1c4987e8e51618c67138be35d0e7890a78a1db 100644
--- a/test/built-ins/Object/defineProperty/15.2.3.6-2-44.js
+++ b/test/built-ins/Object/defineProperty/15.2.3.6-2-44.js
@@ -6,10 +6,8 @@ es5id: 15.2.3.6-2-44
 description: >
     Object.defineProperty - argument 'P' is an object that has an own
     valueOf method
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
         var obj = {};
 
         var ownProp = {
@@ -21,7 +19,4 @@ function testcase() {
 
         Object.defineProperty(obj, ownProp, {});
 
-        return obj.hasOwnProperty("abc");
-
-    }
-runTestCase(testcase);
+assert(obj.hasOwnProperty("abc"), 'obj.hasOwnProperty("abc") !== true');
diff --git a/test/built-ins/Object/defineProperty/15.2.3.6-2-45.js b/test/built-ins/Object/defineProperty/15.2.3.6-2-45.js
index 21ce8fcd9c3305039b157d9d7ef0438a44a69d3b..09a51c19888a033b2cb3bc84cada652e0fd3ec2f 100644
--- a/test/built-ins/Object/defineProperty/15.2.3.6-2-45.js
+++ b/test/built-ins/Object/defineProperty/15.2.3.6-2-45.js
@@ -7,10 +7,8 @@ description: >
     Object.defineProperty - argument 'P' is an object whose toString
     method returns an object and whose valueOf method returns a
     primitive value
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
         var obj = {};
         var toStringAccessed = false;
         var valueOfAccessed = false;
@@ -28,6 +26,6 @@ function testcase() {
 
         Object.defineProperty(obj, ownProp, {});
 
-        return obj.hasOwnProperty("abc") && valueOfAccessed && toStringAccessed;
-    }
-runTestCase(testcase);
+assert(obj.hasOwnProperty("abc"), 'obj.hasOwnProperty("abc") !== true');
+assert(valueOfAccessed, 'valueOfAccessed !== true');
+assert(toStringAccessed, 'toStringAccessed !== true');
diff --git a/test/built-ins/Object/defineProperty/15.2.3.6-2-46.js b/test/built-ins/Object/defineProperty/15.2.3.6-2-46.js
index 6e11faba26131324aa4f815ac71dea766c5b577b..cca20e2ee596a0bc266f8173c7576f2b2583e396 100644
--- a/test/built-ins/Object/defineProperty/15.2.3.6-2-46.js
+++ b/test/built-ins/Object/defineProperty/15.2.3.6-2-46.js
@@ -6,10 +6,8 @@ es5id: 15.2.3.6-2-46
 description: >
     Object.defineProperty - argument 'P' is an object that has an own
     toString and valueOf method
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
         var obj = {};
         var toStringAccessed = false;
         var valueOfAccessed = false;
@@ -26,7 +24,6 @@ function testcase() {
         };
         Object.defineProperty(obj, ownProp, {});
 
-        return obj.hasOwnProperty("abc") && !valueOfAccessed && toStringAccessed;
-
-    }
-runTestCase(testcase);
+assert(obj.hasOwnProperty("abc"), 'obj.hasOwnProperty("abc") !== true');
+assert.sameValue(valueOfAccessed, false, 'valueOfAccessed');
+assert(toStringAccessed, 'toStringAccessed !== true');
diff --git a/test/built-ins/Object/defineProperty/15.2.3.6-2-48.js b/test/built-ins/Object/defineProperty/15.2.3.6-2-48.js
index 22b057c712eaf388cc6298fe406c5a28c0e8fbf9..4de8a76c9e59b5d2ee465d8a1c8a49d1eb9532b2 100644
--- a/test/built-ins/Object/defineProperty/15.2.3.6-2-48.js
+++ b/test/built-ins/Object/defineProperty/15.2.3.6-2-48.js
@@ -7,10 +7,8 @@ description: >
     Object.defineProperty - an inherited toString method  is invoked
     when 'P' is an object with an own valueOf and an inherited
     toString methods
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
         var obj = {};
         var toStringAccessed = false;
         var valueOfAccessed = false;
@@ -33,6 +31,6 @@ function testcase() {
 
         Object.defineProperty(obj, child, {});
 
-        return obj.hasOwnProperty("test") && !valueOfAccessed && toStringAccessed;
-    }
-runTestCase(testcase);
+assert(obj.hasOwnProperty("test"), 'obj.hasOwnProperty("test") !== true');
+assert.sameValue(valueOfAccessed, false, 'valueOfAccessed');
+assert(toStringAccessed, 'toStringAccessed !== true');
diff --git a/test/built-ins/Object/defineProperty/15.2.3.6-2-5.js b/test/built-ins/Object/defineProperty/15.2.3.6-2-5.js
index 7f388236940e45951a6c61376ceaf3bf8aac783e..c0310cf559f8c0a8cd205f81101991824b24622e 100644
--- a/test/built-ins/Object/defineProperty/15.2.3.6-2-5.js
+++ b/test/built-ins/Object/defineProperty/15.2.3.6-2-5.js
@@ -6,14 +6,9 @@ es5id: 15.2.3.6-2-5
 description: >
     Object.defineProperty - argument 'P' is a number that converts to
     a string (value is NaN)
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
         var obj = {};
         Object.defineProperty(obj, NaN, {});
 
-        return obj.hasOwnProperty("NaN");
-
-    }
-runTestCase(testcase);
+assert(obj.hasOwnProperty("NaN"), 'obj.hasOwnProperty("NaN") !== true');
diff --git a/test/built-ins/Object/defineProperty/15.2.3.6-2-6.js b/test/built-ins/Object/defineProperty/15.2.3.6-2-6.js
index f693f300cb11cb07809859fc2f2334666f2c76a8..2915e96e4331b7cf3fd473fa2bb8ce286cd5cad8 100644
--- a/test/built-ins/Object/defineProperty/15.2.3.6-2-6.js
+++ b/test/built-ins/Object/defineProperty/15.2.3.6-2-6.js
@@ -6,14 +6,9 @@ es5id: 15.2.3.6-2-6
 description: >
     Object.defineProperty - argument 'P' is a number that converts to
     a string (value is 0)
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
         var obj = {};
         Object.defineProperty(obj, 0, {});
 
-        return obj.hasOwnProperty("0");
-
-    }
-runTestCase(testcase);
+assert(obj.hasOwnProperty("0"), 'obj.hasOwnProperty("0") !== true');
diff --git a/test/built-ins/Object/defineProperty/15.2.3.6-2-7.js b/test/built-ins/Object/defineProperty/15.2.3.6-2-7.js
index e0b07e597734d53d2a9c443f673f93595038c560..907eb445b34489669c568ce6fbf3a2eb294d35d4 100644
--- a/test/built-ins/Object/defineProperty/15.2.3.6-2-7.js
+++ b/test/built-ins/Object/defineProperty/15.2.3.6-2-7.js
@@ -6,14 +6,9 @@ es5id: 15.2.3.6-2-7
 description: >
     Object.defineProperty - argument 'P' is a number that converts to
     a string (value is +0)
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
         var obj = {};
         Object.defineProperty(obj, +0, {});
 
-        return obj.hasOwnProperty("0");
-
-    }
-runTestCase(testcase);
+assert(obj.hasOwnProperty("0"), 'obj.hasOwnProperty("0") !== true');
diff --git a/test/built-ins/Object/defineProperty/15.2.3.6-2-8.js b/test/built-ins/Object/defineProperty/15.2.3.6-2-8.js
index fe4cbfb5127dd69bbc4945e78e5ee7a821e63c05..5dd887196478a5ae3833cecefe9d387d2c6be225 100644
--- a/test/built-ins/Object/defineProperty/15.2.3.6-2-8.js
+++ b/test/built-ins/Object/defineProperty/15.2.3.6-2-8.js
@@ -6,14 +6,9 @@ es5id: 15.2.3.6-2-8
 description: >
     Object.defineProperty - argument 'P' is a number that converts to
     a string (value is -0)
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
         var obj = {};
         Object.defineProperty(obj, -0, {});
 
-        return obj.hasOwnProperty("0");
-
-    }
-runTestCase(testcase);
+assert(obj.hasOwnProperty("0"), 'obj.hasOwnProperty("0") !== true');
diff --git a/test/built-ins/Object/defineProperty/15.2.3.6-2-9.js b/test/built-ins/Object/defineProperty/15.2.3.6-2-9.js
index fa1ad90e585197b0467d90b6c7cdb5b943ef0935..409ef356e076894e6ab1270ed2bb2967c2c20f79 100644
--- a/test/built-ins/Object/defineProperty/15.2.3.6-2-9.js
+++ b/test/built-ins/Object/defineProperty/15.2.3.6-2-9.js
@@ -6,14 +6,9 @@ es5id: 15.2.3.6-2-9
 description: >
     Object.defineProperty - argument 'P' is a number that converts to
     a string (value is a positive number)
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
         var obj = {};
         Object.defineProperty(obj, 30, {});
 
-        return obj.hasOwnProperty("30");
-
-    }
-runTestCase(testcase);
+assert(obj.hasOwnProperty("30"), 'obj.hasOwnProperty("30") !== true');
diff --git a/test/built-ins/Object/defineProperty/15.2.3.6-3-101.js b/test/built-ins/Object/defineProperty/15.2.3.6-3-101.js
index aa4e6b5a31c96875bb2fdb2f1fb32bf1a812c1f3..6f424df924a4ac8d27ff5eb947a5a5cfe04c73d4 100644
--- a/test/built-ins/Object/defineProperty/15.2.3.6-3-101.js
+++ b/test/built-ins/Object/defineProperty/15.2.3.6-3-101.js
@@ -6,10 +6,8 @@ es5id: 15.2.3.6-3-101
 description: >
     Object.defineProperty - 'configurable' property in 'Attributes' is
     true (8.10.5 step 4.b)
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
         var obj = {};
 
         Object.defineProperty(obj, "property", { configurable: true });
@@ -20,6 +18,5 @@ function testcase() {
 
         var afterDeleted = obj.hasOwnProperty("property");
 
-        return beforeDeleted === true && afterDeleted === false;
-    }
-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-107.js b/test/built-ins/Object/defineProperty/15.2.3.6-3-107.js
index 8f904729d208897b2d607b771fdadcf8b6b0a641..bfe8d6199b11ab049e2d2554e33d8147014cb7a8 100644
--- a/test/built-ins/Object/defineProperty/15.2.3.6-3-107.js
+++ b/test/built-ins/Object/defineProperty/15.2.3.6-3-107.js
@@ -6,10 +6,8 @@ es5id: 15.2.3.6-3-107
 description: >
     Object.defineProperty - 'configurable' property in 'Attributes' is
     a positive number (8.10.5 step 4.b)
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
         var obj = {};
 
         Object.defineProperty(obj, "property", { configurable: 12345 });
@@ -20,6 +18,5 @@ function testcase() {
 
         var afterDeleted = obj.hasOwnProperty("property");
 
-        return beforeDeleted === true && afterDeleted === false;
-    }
-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-108.js b/test/built-ins/Object/defineProperty/15.2.3.6-3-108.js
index 83478436345d4352db3d7074ec70fd24f5ba4a0a..533e2176ef28ccd38fd52a7e3a3a461c3700d6a2 100644
--- a/test/built-ins/Object/defineProperty/15.2.3.6-3-108.js
+++ b/test/built-ins/Object/defineProperty/15.2.3.6-3-108.js
@@ -6,10 +6,8 @@ es5id: 15.2.3.6-3-108
 description: >
     Object.defineProperty - 'configurable' property in 'Attributes' is
     a negative number (8.10.5 step 4.b)
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
         var obj = {};
 
         Object.defineProperty(obj, "property", { configurable: -12345 });
@@ -20,6 +18,5 @@ function testcase() {
 
         var afterDeleted = obj.hasOwnProperty("property");
 
-        return beforeDeleted === true && afterDeleted === false;
-    }
-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-110.js b/test/built-ins/Object/defineProperty/15.2.3.6-3-110.js
index 00b6557c9e67490ab3d88863b32642af1ee1023a..fa8d9108e8c8173c08ec93727294c39b55104a49 100644
--- a/test/built-ins/Object/defineProperty/15.2.3.6-3-110.js
+++ b/test/built-ins/Object/defineProperty/15.2.3.6-3-110.js
@@ -6,10 +6,8 @@ es5id: 15.2.3.6-3-110
 description: >
     Object.defineProperty - 'configurable' property in 'Attributes' is
     a non-empty string (8.10.5 step 4.b)
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
         var obj = {};
 
         Object.defineProperty(obj, "property", { configurable: "       " });
@@ -20,6 +18,5 @@ function testcase() {
 
         var afterDeleted = obj.hasOwnProperty("property");
 
-        return beforeDeleted === true && afterDeleted === false;
-    }
-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-111.js b/test/built-ins/Object/defineProperty/15.2.3.6-3-111.js
index d2ed346ca7e9c9f20d356acfcc42855e6506ae3d..03e65d3c83c9186c4e7373c5ea32dabcd886b942 100644
--- a/test/built-ins/Object/defineProperty/15.2.3.6-3-111.js
+++ b/test/built-ins/Object/defineProperty/15.2.3.6-3-111.js
@@ -6,10 +6,8 @@ es5id: 15.2.3.6-3-111
 description: >
     Object.defineProperty - 'configurable' property in 'Attributes' is
     a Function object (8.10.5 step 4.b)
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
         var obj = {};
 
         Object.defineProperty(obj, "property", {
@@ -22,6 +20,5 @@ function testcase() {
 
         var afterDeleted = obj.hasOwnProperty("property");
 
-        return beforeDeleted === true && afterDeleted === false;
-    }
-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-112.js b/test/built-ins/Object/defineProperty/15.2.3.6-3-112.js
index 725a3ca8f6784e565594ec8d453e712e54adb2de..8b0def7fde86f6244f85f636064f59b008f9b77b 100644
--- a/test/built-ins/Object/defineProperty/15.2.3.6-3-112.js
+++ b/test/built-ins/Object/defineProperty/15.2.3.6-3-112.js
@@ -6,10 +6,8 @@ es5id: 15.2.3.6-3-112
 description: >
     Object.defineProperty - 'configurable' property in 'Attributes' is
     an Array object (8.10.5 step 4.b)
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
         var obj = {};
 
         Object.defineProperty(obj, "property", { configurable: [1, 2, 3] });
@@ -20,6 +18,5 @@ function testcase() {
 
         var afterDeleted = obj.hasOwnProperty("property");
 
-        return beforeDeleted === true && afterDeleted === false;
-    }
-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-113.js b/test/built-ins/Object/defineProperty/15.2.3.6-3-113.js
index 1fdc73f317efb1416cfac5ff2ecaf2e39a44e9c4..59b6781075015f81482d46402109620e6d3a4de2 100644
--- a/test/built-ins/Object/defineProperty/15.2.3.6-3-113.js
+++ b/test/built-ins/Object/defineProperty/15.2.3.6-3-113.js
@@ -6,10 +6,8 @@ es5id: 15.2.3.6-3-113
 description: >
     Object.defineProperty - 'configurable' property in 'Attributes' is
     a String object (8.10.5 step 4.b)
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
         var obj = {};
 
         Object.defineProperty(obj, "property", { configurable: new String("bbq") });
@@ -20,6 +18,5 @@ function testcase() {
 
         var afterDeleted = obj.hasOwnProperty("property");
 
-        return beforeDeleted === true && afterDeleted === false;
-    }
-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-114.js b/test/built-ins/Object/defineProperty/15.2.3.6-3-114.js
index 7b925720c7a72716b66469d5acd33402b7f8cd5b..c6a3e8cd24236f93548890de23a769525b662212 100644
--- a/test/built-ins/Object/defineProperty/15.2.3.6-3-114.js
+++ b/test/built-ins/Object/defineProperty/15.2.3.6-3-114.js
@@ -6,10 +6,8 @@ es5id: 15.2.3.6-3-114
 description: >
     Object.defineProperty - 'configurable' property in 'Attributes' is
     a Boolean object (8.10.5 step 4.b)
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
         var obj = {};
 
         Object.defineProperty(obj, "property", { configurable: new Boolean(true) });
@@ -20,6 +18,5 @@ function testcase() {
 
         var afterDeleted = obj.hasOwnProperty("property");
 
-        return beforeDeleted === true && afterDeleted === false;
-    }
-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-115.js b/test/built-ins/Object/defineProperty/15.2.3.6-3-115.js
index 1a168f5409c06bf84a4289c5aada37ed1ed4e1b5..5907d7b81d5e315cd80209eb12adf54e2f595996 100644
--- a/test/built-ins/Object/defineProperty/15.2.3.6-3-115.js
+++ b/test/built-ins/Object/defineProperty/15.2.3.6-3-115.js
@@ -6,10 +6,8 @@ es5id: 15.2.3.6-3-115
 description: >
     Object.defineProperty - 'configurable' property in 'Attributes' is
     a Number object (8.10.5 step 4.b)
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
         var obj = {};
 
         Object.defineProperty(obj, "property", { configurable: new Number(0) });
@@ -20,6 +18,5 @@ function testcase() {
 
         var afterDeleted = obj.hasOwnProperty("property");
 
-        return beforeDeleted === true && afterDeleted === false;
-    }
-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-116.js b/test/built-ins/Object/defineProperty/15.2.3.6-3-116.js
index 562a2a2c9b1f1042da256e6fe8128583fd03f9fd..2803afbe057b700b47fc47c068fd22957e05996b 100644
--- a/test/built-ins/Object/defineProperty/15.2.3.6-3-116.js
+++ b/test/built-ins/Object/defineProperty/15.2.3.6-3-116.js
@@ -6,10 +6,8 @@ es5id: 15.2.3.6-3-116
 description: >
     Object.defineProperty - 'configurable' property in 'Attributes' is
     the Math object (8.10.5 step 4.b)
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
         var obj = {};
 
         Object.defineProperty(obj, "property", { configurable: Math });
@@ -20,6 +18,5 @@ function testcase() {
 
         var afterDeleted = obj.hasOwnProperty("property");
 
-        return beforeDeleted === true && afterDeleted === false;
-    }
-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-117.js b/test/built-ins/Object/defineProperty/15.2.3.6-3-117.js
index 8a89e3666793418d6d75cfba46640ccbef8346aa..2daeab199c38ea8a3903ba8ba5acbfb27f413f2b 100644
--- a/test/built-ins/Object/defineProperty/15.2.3.6-3-117.js
+++ b/test/built-ins/Object/defineProperty/15.2.3.6-3-117.js
@@ -6,10 +6,8 @@ es5id: 15.2.3.6-3-117
 description: >
     Object.defineProperty - 'configurable' property in 'Attributes' is
     a Date object (8.10.5 step 4.b)
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
         var obj = {};
 
         Object.defineProperty(obj, "property", { configurable: new Date() });
@@ -20,6 +18,5 @@ function testcase() {
 
         var afterDeleted = obj.hasOwnProperty("property");
 
-        return beforeDeleted === true && afterDeleted === false;
-    }
-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-118.js b/test/built-ins/Object/defineProperty/15.2.3.6-3-118.js
index 4fedb8837fdee9ce34b8b5438a6909e7b362a48e..76e6ed6d3267cf62a234a46dc050da7d0031ef2f 100644
--- a/test/built-ins/Object/defineProperty/15.2.3.6-3-118.js
+++ b/test/built-ins/Object/defineProperty/15.2.3.6-3-118.js
@@ -6,10 +6,8 @@ es5id: 15.2.3.6-3-118
 description: >
     Object.defineProperty - 'configurable' property in 'Attributes' is
     a RegExp object  (8.10.5 step 4.b)
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
         var obj = {};
 
         var attr = {
@@ -24,6 +22,5 @@ function testcase() {
 
         var afterDeleted = obj.hasOwnProperty("property");
 
-        return beforeDeleted === true && afterDeleted === false;
-    }
-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-119.js b/test/built-ins/Object/defineProperty/15.2.3.6-3-119.js
index bb863b556f7dc198f9b76033a45f03432fb2de11..7b4ff65cfbdd6b85063b40315430029d0bd1ee5d 100644
--- a/test/built-ins/Object/defineProperty/15.2.3.6-3-119.js
+++ b/test/built-ins/Object/defineProperty/15.2.3.6-3-119.js
@@ -6,10 +6,8 @@ es5id: 15.2.3.6-3-119
 description: >
     Object.defineProperty - 'configurable' property in 'Attributes' is
     the JSON object  (8.10.5 step 4.b)
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
         var obj = {};
 
         var attr = {
@@ -24,6 +22,5 @@ function testcase() {
 
         var afterDeleted = obj.hasOwnProperty("property");
 
-        return beforeDeleted === true && afterDeleted === false;
-    }
-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-120.js b/test/built-ins/Object/defineProperty/15.2.3.6-3-120.js
index 07a0d00afcede1307f41f2cc4632615d09662f15..74acbbe0252e5ba05c711b794ed45f0919dc3517 100644
--- a/test/built-ins/Object/defineProperty/15.2.3.6-3-120.js
+++ b/test/built-ins/Object/defineProperty/15.2.3.6-3-120.js
@@ -6,10 +6,8 @@ es5id: 15.2.3.6-3-120
 description: >
     Object.defineProperty - 'configurable' property in 'Attributes' is
     a Error object  (8.10.5 step 4.b)
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
         var obj = {};
 
         var attr = {
@@ -24,6 +22,5 @@ function testcase() {
 
         var afterDeleted = obj.hasOwnProperty("property");
 
-        return beforeDeleted === true && afterDeleted === false;
-    }
-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-121.js b/test/built-ins/Object/defineProperty/15.2.3.6-3-121.js
index 5eb6cc86331a68c6a8178b68d0e25887ee835915..d7c924ad58e7639ff8579da3fcbd88cbce8a4017 100644
--- a/test/built-ins/Object/defineProperty/15.2.3.6-3-121.js
+++ b/test/built-ins/Object/defineProperty/15.2.3.6-3-121.js
@@ -6,10 +6,8 @@ es5id: 15.2.3.6-3-121
 description: >
     Object.defineProperty - 'configurable' property in 'Attributes' is
     the Argument object  (8.10.5 step 4.b)
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
         var obj = {};
 
         var argObj = (function () { return arguments; })(1, true, "a");
@@ -26,6 +24,5 @@ function testcase() {
 
         var afterDeleted = obj.hasOwnProperty("property");
 
-        return beforeDeleted === true && afterDeleted === false;
-    }
-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-123.js b/test/built-ins/Object/defineProperty/15.2.3.6-3-123.js
index ca62943698ec8fa21dddbd3845caf865947567a2..bbe94b75af6c01630cfbc9d3438fd3d5cbd77b79 100644
--- a/test/built-ins/Object/defineProperty/15.2.3.6-3-123.js
+++ b/test/built-ins/Object/defineProperty/15.2.3.6-3-123.js
@@ -6,12 +6,9 @@ es5id: 15.2.3.6-3-123
 description: >
     Object.defineProperty - 'configurable' property in 'Attributes' is
     the global object  (8.10.5 step 4.b)
-includes:
-    - runTestCase.js
-    - fnGlobalObject.js
+includes: [fnGlobalObject.js]
 ---*/
 
-function testcase() {
         var obj = {};
 
         var attr = {
@@ -26,6 +23,5 @@ function testcase() {
 
         var afterDeleted = obj.hasOwnProperty("property");
 
-        return beforeDeleted === true && afterDeleted === false;
-    }
-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-124.js b/test/built-ins/Object/defineProperty/15.2.3.6-3-124.js
index 94f7b350cf207fff80531e7c245206c986c31cea..b4f1995e7a165dc478ae8213fa5a08b2ac35143c 100644
--- a/test/built-ins/Object/defineProperty/15.2.3.6-3-124.js
+++ b/test/built-ins/Object/defineProperty/15.2.3.6-3-124.js
@@ -7,10 +7,8 @@ description: >
     Object.defineProperty - 'configurable' property in 'Attributes' is
     treated as true when it is a string (value is 'false')  (8.10.5
     step 4.b)
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
         var obj = {};
 
         var attr = {
@@ -25,6 +23,5 @@ function testcase() {
 
         var afterDeleted = obj.hasOwnProperty("property");
 
-        return beforeDeleted === true && afterDeleted === false;
-    }
-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-125.js b/test/built-ins/Object/defineProperty/15.2.3.6-3-125.js
index fb6cd7aee29582c99964787e6536895ad24210a4..9c948ddaa5023f3c4462d5e510ae880761574cdb 100644
--- a/test/built-ins/Object/defineProperty/15.2.3.6-3-125.js
+++ b/test/built-ins/Object/defineProperty/15.2.3.6-3-125.js
@@ -6,10 +6,8 @@ es5id: 15.2.3.6-3-125
 description: >
     Object.defineProperty - 'configurable' property in 'Attributes' is
     treated as true when it is new Boolean(false)  (8.10.5 step 4.b)
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
         var obj = {};
 
         var attr = {
@@ -24,6 +22,5 @@ function testcase() {
 
         var afterDeleted = obj.hasOwnProperty("property");
 
-        return beforeDeleted === true && afterDeleted === false;
-    }
-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-126.js b/test/built-ins/Object/defineProperty/15.2.3.6-3-126.js
index cdf39190fe266813105f6cbcb558e2e1b4b5e288..e6e27c455fbc30971c3ae1c9d89a4be3bc147502 100644
--- a/test/built-ins/Object/defineProperty/15.2.3.6-3-126.js
+++ b/test/built-ins/Object/defineProperty/15.2.3.6-3-126.js
@@ -6,16 +6,12 @@ es5id: 15.2.3.6-3-126
 description: >
     Object.defineProperty - 'value' property in 'Attributes' is
     present  (8.10.5 step 5)
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
         var obj = {};
 
         var attr = { value: 100 };
 
         Object.defineProperty(obj, "property", attr);
 
-        return obj.property === 100;
-    }
-runTestCase(testcase);
+assert.sameValue(obj.property, 100, 'obj.property');
diff --git a/test/built-ins/Object/defineProperty/15.2.3.6-3-127.js b/test/built-ins/Object/defineProperty/15.2.3.6-3-127.js
index 52ac002c7f5d5a641e6e6055dc0b2de29fe6536d..2356a57b6ecae255c4be6f84e52491eb6dad74b3 100644
--- a/test/built-ins/Object/defineProperty/15.2.3.6-3-127.js
+++ b/test/built-ins/Object/defineProperty/15.2.3.6-3-127.js
@@ -6,10 +6,8 @@ es5id: 15.2.3.6-3-127
 description: >
     Object.defineProperty - 'value' property in 'Attributes' is not
     present  (8.10.5 step 5)
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
         var obj = { };
 
         var attr = {
@@ -18,6 +16,5 @@ function testcase() {
 
         Object.defineProperty(obj, "property", attr);
 
-        return obj.hasOwnProperty("property") && typeof (obj.property) === "undefined";
-    }
-runTestCase(testcase);
+assert(obj.hasOwnProperty("property"), 'obj.hasOwnProperty("property") !== true');
+assert.sameValue(typeof (obj.property), "undefined", 'typeof (obj.property)');
diff --git a/test/built-ins/Object/defineProperty/15.2.3.6-3-129.js b/test/built-ins/Object/defineProperty/15.2.3.6-3-129.js
index 0b026d85648bb9b14cb017a22046925e32b71bf4..6c0767ea06b8c3eec479ba2c321053f8bb42a1c9 100644
--- a/test/built-ins/Object/defineProperty/15.2.3.6-3-129.js
+++ b/test/built-ins/Object/defineProperty/15.2.3.6-3-129.js
@@ -6,10 +6,8 @@ es5id: 15.2.3.6-3-129
 description: >
     Object.defineProperty - 'value' property in 'Attributes' is an
     inherited data property  (8.10.5 step 5.a)
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
         var obj = { };
 
         var proto = {
@@ -23,6 +21,4 @@ function testcase() {
 
         Object.defineProperty(obj, "property", child);
 
-        return obj.property === "inheritedDataProperty";
-    }
-runTestCase(testcase);
+assert.sameValue(obj.property, "inheritedDataProperty", 'obj.property');
diff --git a/test/built-ins/Object/defineProperty/15.2.3.6-3-130.js b/test/built-ins/Object/defineProperty/15.2.3.6-3-130.js
index f2fe4831ceeb789cd10ef1df984d096853ba5cc8..d57fa6425014db975d5e8f47094f0a7df5b9a105 100644
--- a/test/built-ins/Object/defineProperty/15.2.3.6-3-130.js
+++ b/test/built-ins/Object/defineProperty/15.2.3.6-3-130.js
@@ -7,10 +7,8 @@ description: >
     Object.defineProperty - 'value' property in 'Attributes' is own
     data property that overrides an inherited data property  (8.10.5
     step 5.a)
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
         var obj = {};
 
         var proto = { value: "inheritedDataProperty" };
@@ -24,6 +22,4 @@ function testcase() {
 
         Object.defineProperty(obj, "property", child);
 
-        return obj.property === "ownDataProperty";
-    }
-runTestCase(testcase);
+assert.sameValue(obj.property, "ownDataProperty", 'obj.property');
diff --git a/test/built-ins/Object/defineProperty/15.2.3.6-3-131.js b/test/built-ins/Object/defineProperty/15.2.3.6-3-131.js
index e547ea5619af9a9cdd987bc1063e328ff7151d2d..6490829bff3db57319fc3c6a0da995edba381d0a 100644
--- a/test/built-ins/Object/defineProperty/15.2.3.6-3-131.js
+++ b/test/built-ins/Object/defineProperty/15.2.3.6-3-131.js
@@ -7,10 +7,8 @@ description: >
     Object.defineProperty - 'value' property in 'Attributes' is own
     data property that overrides an inherited accessor property
     (8.10.5 step 5.a)
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
         var obj = { };
 
         var proto = {};
@@ -31,6 +29,4 @@ function testcase() {
 
         Object.defineProperty(obj, "property", child);
 
-        return obj.property === "ownDataProperty";
-    }
-runTestCase(testcase);
+assert.sameValue(obj.property, "ownDataProperty", 'obj.property');
diff --git a/test/built-ins/Object/defineProperty/15.2.3.6-3-132.js b/test/built-ins/Object/defineProperty/15.2.3.6-3-132.js
index be9b0f3affeb4523919416fcdc4d8972584a07a0..dac5ac76fd6572c1e5e11ace1dd8f37060db168c 100644
--- a/test/built-ins/Object/defineProperty/15.2.3.6-3-132.js
+++ b/test/built-ins/Object/defineProperty/15.2.3.6-3-132.js
@@ -6,10 +6,8 @@ es5id: 15.2.3.6-3-132
 description: >
     Object.defineProperty - 'value' property in 'Attributes' is own
     accessor property  (8.10.5 step 5.a)
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
         var obj = { };
 
         var attr = {};
@@ -21,6 +19,4 @@ function testcase() {
 
         Object.defineProperty(obj, "property", attr);
 
-        return obj.property === "ownAccessorProperty";
-    }
-runTestCase(testcase);
+assert.sameValue(obj.property, "ownAccessorProperty", 'obj.property');
diff --git a/test/built-ins/Object/defineProperty/15.2.3.6-3-133.js b/test/built-ins/Object/defineProperty/15.2.3.6-3-133.js
index a912dd16884164082c70e12cd58f4a1a523bf860..0fbac7b7c0aab43604f25a082b6c36258908a43d 100644
--- a/test/built-ins/Object/defineProperty/15.2.3.6-3-133.js
+++ b/test/built-ins/Object/defineProperty/15.2.3.6-3-133.js
@@ -6,10 +6,8 @@ es5id: 15.2.3.6-3-133
 description: >
     Object.defineProperty - 'value' property in 'Attributes' is an
     inherited accessor property  (8.10.5 step 5.a)
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
         var obj = { };
 
         var proto = {};
@@ -26,6 +24,4 @@ function testcase() {
 
         Object.defineProperty(obj, "property", child);
 
-        return obj.property === "inheritedAccessorProperty";
-    }
-runTestCase(testcase);
+assert.sameValue(obj.property, "inheritedAccessorProperty", 'obj.property');
diff --git a/test/built-ins/Object/defineProperty/15.2.3.6-3-134.js b/test/built-ins/Object/defineProperty/15.2.3.6-3-134.js
index f6b14974da7d0b098d979d3ed733320673316c24..25e3a8e4f1561726f2468db052dd619280fbba5e 100644
--- a/test/built-ins/Object/defineProperty/15.2.3.6-3-134.js
+++ b/test/built-ins/Object/defineProperty/15.2.3.6-3-134.js
@@ -7,10 +7,8 @@ description: >
     Object.defineProperty - 'value' property in 'Attributes' is own
     accessor property that overrides an inherited data property
     (8.10.5 step 5.a)
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
         var obj = {};
 
         var proto = {
@@ -29,6 +27,4 @@ function testcase() {
 
         Object.defineProperty(obj, "property", child);
 
-        return obj.property === "ownAccessorProperty";
-    }
-runTestCase(testcase);
+assert.sameValue(obj.property, "ownAccessorProperty", 'obj.property');
diff --git a/test/built-ins/Object/defineProperty/15.2.3.6-3-135.js b/test/built-ins/Object/defineProperty/15.2.3.6-3-135.js
index 639aa8667af86eb1379e62d3fb76e448fa14a9bd..81361b3a5cf3fcb2c4baed02012d9d58e4fe31c9 100644
--- a/test/built-ins/Object/defineProperty/15.2.3.6-3-135.js
+++ b/test/built-ins/Object/defineProperty/15.2.3.6-3-135.js
@@ -7,10 +7,8 @@ description: >
     Object.defineProperty - 'value' property in 'Attributes' is own
     accessor property that overrides an inherited accessor property
     (8.10.5 step 5.a)
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
         var obj = {};
 
         var proto = {};
@@ -32,6 +30,4 @@ function testcase() {
 
         Object.defineProperty(obj, "property", child);
 
-        return obj.property === "ownAccessorProperty";
-    }
-runTestCase(testcase);
+assert.sameValue(obj.property, "ownAccessorProperty", 'obj.property');
diff --git a/test/built-ins/Object/defineProperty/15.2.3.6-3-136.js b/test/built-ins/Object/defineProperty/15.2.3.6-3-136.js
index 66efebb864ae5302a8ee5a82e654d6a729b8b3f0..6a3a9207e726f17e91986ca99be5eaded32cf9b3 100644
--- a/test/built-ins/Object/defineProperty/15.2.3.6-3-136.js
+++ b/test/built-ins/Object/defineProperty/15.2.3.6-3-136.js
@@ -6,10 +6,8 @@ es5id: 15.2.3.6-3-136
 description: >
     Object.defineProperty - 'value' property in 'Attributes' is own
     accessor property without a get function  (8.10.5 step 5.a)
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
         var obj = {};
 
         var attr = {};
@@ -19,6 +17,5 @@ function testcase() {
 
         Object.defineProperty(obj, "property", attr);
 
-        return obj.hasOwnProperty("property") && typeof (obj.property) === "undefined";
-    }
-runTestCase(testcase);
+assert(obj.hasOwnProperty("property"), 'obj.hasOwnProperty("property") !== true');
+assert.sameValue(typeof (obj.property), "undefined", 'typeof (obj.property)');
diff --git a/test/built-ins/Object/defineProperty/15.2.3.6-3-137.js b/test/built-ins/Object/defineProperty/15.2.3.6-3-137.js
index 99f46a84c3a8d591e7c9ce3add716620e2a825e9..aafeec5ffaa1b5855d73a73f857b3a0b9673ec14 100644
--- a/test/built-ins/Object/defineProperty/15.2.3.6-3-137.js
+++ b/test/built-ins/Object/defineProperty/15.2.3.6-3-137.js
@@ -7,10 +7,8 @@ description: >
     Object.defineProperty - 'value' property in 'Attributes' is own
     accessor property(without a get function) that overrides an
     inherited accessor property  (8.10.5 step 5.a)
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
         var obj = { };
 
         var proto = {};
@@ -30,6 +28,5 @@ function testcase() {
 
         Object.defineProperty(obj, "property", child);
 
-        return obj.hasOwnProperty("property") && typeof (obj.property) === "undefined";
-    }
-runTestCase(testcase);
+assert(obj.hasOwnProperty("property"), 'obj.hasOwnProperty("property") !== true');
+assert.sameValue(typeof (obj.property), "undefined", 'typeof (obj.property)');
diff --git a/test/built-ins/Object/defineProperty/15.2.3.6-3-138.js b/test/built-ins/Object/defineProperty/15.2.3.6-3-138.js
index 86f1242cdd8df5509d903244d42af82ed6fde8d2..1c0616d17d4f16c76356d709cfc9df78463152a3 100644
--- a/test/built-ins/Object/defineProperty/15.2.3.6-3-138.js
+++ b/test/built-ins/Object/defineProperty/15.2.3.6-3-138.js
@@ -7,10 +7,8 @@ description: >
     Object.defineProperty - 'value' property in 'Attributes' is an
     inherited accessor property without a get function  (8.10.5 step
     5.a)
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
         var obj = { property : 120 };
 
         var proto = {};
@@ -25,6 +23,5 @@ function testcase() {
 
         Object.defineProperty(obj, "property", child);
 
-        return obj.hasOwnProperty("property") && typeof (obj.property) === "undefined";
-    }
-runTestCase(testcase);
+assert(obj.hasOwnProperty("property"), 'obj.hasOwnProperty("property") !== true');
+assert.sameValue(typeof (obj.property), "undefined", 'typeof (obj.property)');
diff --git a/test/built-ins/Object/defineProperty/15.2.3.6-3-139.js b/test/built-ins/Object/defineProperty/15.2.3.6-3-139.js
index 705be1f2eadc7a7f99a62ddd7514a3ac1ac2cb51..544b80e06304d95116c65b9f602fbf9d06a2dd48 100644
--- a/test/built-ins/Object/defineProperty/15.2.3.6-3-139.js
+++ b/test/built-ins/Object/defineProperty/15.2.3.6-3-139.js
@@ -7,10 +7,8 @@ description: >
     Object.defineProperty - 'Attributes' is a Function object which
     implements its own [[Get]] method to access the 'value' property
     (8.10.5 step 5.a)
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
         var obj = { };
 
         var funObj = function (a, b) {
@@ -21,6 +19,4 @@ function testcase() {
 
         Object.defineProperty(obj, "property", funObj);
 
-        return obj.property === "Function";
-    }
-runTestCase(testcase);
+assert.sameValue(obj.property, "Function", 'obj.property');
diff --git a/test/built-ins/Object/defineProperty/15.2.3.6-3-140.js b/test/built-ins/Object/defineProperty/15.2.3.6-3-140.js
index 8240099f421749b658cea7c5f8b1c30f486809e1..5dcb9fc1e3b13248cdb3e37dc64b458c929edc18 100644
--- a/test/built-ins/Object/defineProperty/15.2.3.6-3-140.js
+++ b/test/built-ins/Object/defineProperty/15.2.3.6-3-140.js
@@ -7,10 +7,8 @@ description: >
     Object.defineProperty - 'Attributes' is an Array 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 = { };
 
         var arrObj = [1, 2, 3];
@@ -19,6 +17,4 @@ function testcase() {
 
         Object.defineProperty(obj, "property", arrObj);
 
-        return obj.property === "Array";
-    }
-runTestCase(testcase);
+assert.sameValue(obj.property, "Array", 'obj.property');
diff --git a/test/built-ins/Object/defineProperty/15.2.3.6-3-141.js b/test/built-ins/Object/defineProperty/15.2.3.6-3-141.js
index 259c7c438bdd5cf33ef6733150e3920e51726ff3..531b40470eda7dcc229042ce2e910e824619be28 100644
--- a/test/built-ins/Object/defineProperty/15.2.3.6-3-141.js
+++ b/test/built-ins/Object/defineProperty/15.2.3.6-3-141.js
@@ -7,10 +7,8 @@ description: >
     Object.defineProperty - 'Attributes' is a String 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 = { };
 
         var strObj = new String("abc");
@@ -19,6 +17,4 @@ function testcase() {
 
         Object.defineProperty(obj, "property", strObj);
 
-        return obj.property === "String";
-    }
-runTestCase(testcase);
+assert.sameValue(obj.property, "String", 'obj.property');
diff --git a/test/built-ins/Object/defineProperty/15.2.3.6-3-142.js b/test/built-ins/Object/defineProperty/15.2.3.6-3-142.js
index 012d079c45ca8195b81d48d08babc044e2661295..9daa893ce8eb9d6b7c32e85b07f2e3815a120be4 100644
--- a/test/built-ins/Object/defineProperty/15.2.3.6-3-142.js
+++ b/test/built-ins/Object/defineProperty/15.2.3.6-3-142.js
@@ -7,10 +7,8 @@ description: >
     Object.defineProperty - 'Attributes' is a Boolean 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 = { };
 
         var boolObj = new Boolean(true);
@@ -19,6 +17,4 @@ function testcase() {
 
         Object.defineProperty(obj, "property", boolObj);
 
-        return obj.property === "Boolean";
-    }
-runTestCase(testcase);
+assert.sameValue(obj.property, "Boolean", 'obj.property');
diff --git a/test/built-ins/Object/defineProperty/15.2.3.6-3-143.js b/test/built-ins/Object/defineProperty/15.2.3.6-3-143.js
index 403b4f32857ebf683922a1826369a2937175c3ce..e321f19905fb9c425a625f9cc9e68b702f1729ba 100644
--- a/test/built-ins/Object/defineProperty/15.2.3.6-3-143.js
+++ b/test/built-ins/Object/defineProperty/15.2.3.6-3-143.js
@@ -7,10 +7,8 @@ description: >
     Object.defineProperty - 'Attributes' is a Number 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 = { };
 
         var numObj = new Number(-2);
@@ -19,6 +17,4 @@ function testcase() {
 
         Object.defineProperty(obj, "property", numObj);
 
-        return obj.property === "Number";
-    }
-runTestCase(testcase);
+assert.sameValue(obj.property, "Number", 'obj.property');
diff --git a/test/built-ins/Object/defineProperty/15.2.3.6-3-145.js b/test/built-ins/Object/defineProperty/15.2.3.6-3-145.js
index b0ba8e37881d7f846954b4339cc9fdef8a937e81..0b7d5c75c0f2a39b1962dfcf480204047e8964c5 100644
--- a/test/built-ins/Object/defineProperty/15.2.3.6-3-145.js
+++ b/test/built-ins/Object/defineProperty/15.2.3.6-3-145.js
@@ -7,10 +7,8 @@ description: >
     Object.defineProperty - 'Attributes' is a Date 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 = { };
 
         var dateObj = new Date();
@@ -19,6 +17,4 @@ function testcase() {
 
         Object.defineProperty(obj, "property", dateObj);
 
-        return obj.property === "Date";
-    }
-runTestCase(testcase);
+assert.sameValue(obj.property, "Date", 'obj.property');
diff --git a/test/built-ins/Object/defineProperty/15.2.3.6-3-146.js b/test/built-ins/Object/defineProperty/15.2.3.6-3-146.js
index 60ee40575ddf553825076fb4ea3b849c3b0263db..fc99527fb2e5c40f3d31bcb69d72208988410f1d 100644
--- a/test/built-ins/Object/defineProperty/15.2.3.6-3-146.js
+++ b/test/built-ins/Object/defineProperty/15.2.3.6-3-146.js
@@ -7,10 +7,8 @@ description: >
     Object.defineProperty - 'Attributes' is a RegExp 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 = { };
 
         var regObj = new RegExp();
@@ -19,6 +17,4 @@ function testcase() {
 
         Object.defineProperty(obj, "property", regObj);
 
-        return obj.property === "RegExp";
-    }
-runTestCase(testcase);
+assert.sameValue(obj.property, "RegExp", 'obj.property');
diff --git a/test/built-ins/Object/defineProperty/15.2.3.6-3-148.js b/test/built-ins/Object/defineProperty/15.2.3.6-3-148.js
index 138728e4fc599904502a8e4fb8a355e2e525cfd3..0e7a99843247a921124f9ba5c4e2c81c39866317 100644
--- a/test/built-ins/Object/defineProperty/15.2.3.6-3-148.js
+++ b/test/built-ins/Object/defineProperty/15.2.3.6-3-148.js
@@ -7,10 +7,8 @@ description: >
     Object.defineProperty - 'Attributes' is an Error 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 = {};
 
         var errObj = new Error();
@@ -19,6 +17,4 @@ function testcase() {
 
         Object.defineProperty(obj, "property", errObj);
 
-        return obj.property === "Error";
-    }
-runTestCase(testcase);
+assert.sameValue(obj.property, "Error", 'obj.property');
diff --git a/test/built-ins/Object/defineProperty/15.2.3.6-3-149.js b/test/built-ins/Object/defineProperty/15.2.3.6-3-149.js
index c0544f24dc5ef7b083bdacacc7db2444079b5a57..4385351de51869db2faccaf1b2c81aaea9220978 100644
--- a/test/built-ins/Object/defineProperty/15.2.3.6-3-149.js
+++ b/test/built-ins/Object/defineProperty/15.2.3.6-3-149.js
@@ -7,10 +7,8 @@ description: >
     Object.defineProperty - 'Attributes' is an Arguments object which
     implements its own [[Get]] method to access the 'value' property
     (8.10.5 step 5.a)
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
         var obj = {};
 
         var argObj = (function () { return arguments; })();
@@ -19,6 +17,4 @@ function testcase() {
 
         Object.defineProperty(obj, "property", argObj);
 
-        return obj.property === "arguments";
-    }
-runTestCase(testcase);
+assert.sameValue(obj.property, "arguments", 'obj.property');
diff --git a/test/built-ins/Object/defineProperty/15.2.3.6-3-154.js b/test/built-ins/Object/defineProperty/15.2.3.6-3-154.js
index a571a877abf3e3f8a53bbd7237ec2ad061f84d65..68f33cd8e989f3ca3fb6e6ea3fb48c7ea8b11e37 100644
--- a/test/built-ins/Object/defineProperty/15.2.3.6-3-154.js
+++ b/test/built-ins/Object/defineProperty/15.2.3.6-3-154.js
@@ -6,10 +6,8 @@ es5id: 15.2.3.6-3-154
 description: >
     Object.defineProperty - 'writable' property in 'Attributes' is own
     data property  (8.10.5 step 6.a)
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
         var obj = { };
 
         var attr = {
@@ -24,6 +22,5 @@ function testcase() {
 
         var afterWrite = (obj.property === "isWritable");
 
-        return beforeWrite === true && afterWrite === true;
-    }
-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-155.js b/test/built-ins/Object/defineProperty/15.2.3.6-3-155.js
index e970469949126806129e657cfb24e28707923045..da6d6e0759bffdfda54b988a6392615f4322b3f6 100644
--- a/test/built-ins/Object/defineProperty/15.2.3.6-3-155.js
+++ b/test/built-ins/Object/defineProperty/15.2.3.6-3-155.js
@@ -6,10 +6,8 @@ es5id: 15.2.3.6-3-155
 description: >
     Object.defineProperty - 'writable' property in 'Attributes' is an
     inherited data property  (8.10.5 step 6.a)
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
         var obj = { };
 
         var proto = {
@@ -29,6 +27,5 @@ function testcase() {
 
         var afterWrite = (obj.property === "isWritable");
 
-        return beforeWrite === true && afterWrite === true;
-    }
-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-156.js b/test/built-ins/Object/defineProperty/15.2.3.6-3-156.js
index 319598ed3242a4c932c920bc3291422a420b3b90..18ef468a6e26e08ecf50b3fc188fd3c90ed77381 100644
--- a/test/built-ins/Object/defineProperty/15.2.3.6-3-156.js
+++ b/test/built-ins/Object/defineProperty/15.2.3.6-3-156.js
@@ -7,10 +7,8 @@ description: >
     Object.defineProperty - 'writable' property in 'Attributes' is own
     data property that overrides an inherited data property  (8.10.5
     step 6.a)
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
         var obj = { };
 
         var proto = {
@@ -31,6 +29,5 @@ function testcase() {
 
         var afterWrite = (obj.property === "isWritable");
 
-        return beforeWrite === true && afterWrite === true;
-    }
-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-157.js b/test/built-ins/Object/defineProperty/15.2.3.6-3-157.js
index 7719052c1ae234d86aa6dbeafd32820ed3839de7..eb343016dc67e1d1ed7fbc81d5c75ced5de3e73c 100644
--- a/test/built-ins/Object/defineProperty/15.2.3.6-3-157.js
+++ b/test/built-ins/Object/defineProperty/15.2.3.6-3-157.js
@@ -7,10 +7,8 @@ description: >
     Object.defineProperty - 'writable' property in 'Attributes' is own
     data property that overrides an inherited accessor property
     (8.10.5 step 6.a)
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
         var obj = { };
 
         var proto = { };
@@ -36,6 +34,5 @@ function testcase() {
 
         var afterWrite = (obj.property === "isWritable");
 
-        return beforeWrite === true && afterWrite === true;
-    }
-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-158.js b/test/built-ins/Object/defineProperty/15.2.3.6-3-158.js
index b1c62bf818d1472013bfa516d5a09cabbc05c907..38c16538834b7e51ea07a79d04b1412e93a211ed 100644
--- a/test/built-ins/Object/defineProperty/15.2.3.6-3-158.js
+++ b/test/built-ins/Object/defineProperty/15.2.3.6-3-158.js
@@ -6,10 +6,8 @@ es5id: 15.2.3.6-3-158
 description: >
     Object.defineProperty - 'writable' property in 'Attributes' is own
     accessor property  (8.10.5 step 6.a)
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
         var obj = { };
 
         var attr = { };
@@ -27,6 +25,5 @@ function testcase() {
 
         var afterWrite = (obj.property === "isWritable");
 
-        return beforeWrite === true && afterWrite === true;
-    }
-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-159.js b/test/built-ins/Object/defineProperty/15.2.3.6-3-159.js
index 58a8c55739763a8e5be2800817625408f299c41e..32dbd534116e8c3c24d0cd4e623d8a6fb1945596 100644
--- a/test/built-ins/Object/defineProperty/15.2.3.6-3-159.js
+++ b/test/built-ins/Object/defineProperty/15.2.3.6-3-159.js
@@ -6,10 +6,8 @@ es5id: 15.2.3.6-3-159
 description: >
     Object.defineProperty - 'writable' property in 'Attributes' is an
     inherited accessor property  (8.10.5 step 6.a)
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
         var obj = {};
 
         var proto = {};
@@ -32,6 +30,5 @@ function testcase() {
 
         var afterWrite = (obj.property === "isWritable");
 
-        return beforeWrite === true && afterWrite === true;
-    }
-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-160.js b/test/built-ins/Object/defineProperty/15.2.3.6-3-160.js
index 5d8269ebf8994f8b6e7aa12aade9927366ac95e2..b363def64512db0280eaba2095d03206a92c3c50 100644
--- a/test/built-ins/Object/defineProperty/15.2.3.6-3-160.js
+++ b/test/built-ins/Object/defineProperty/15.2.3.6-3-160.js
@@ -7,10 +7,8 @@ description: >
     Object.defineProperty - 'writable' property in 'Attributes' is own
     accessor property that overrides an inherited data property
     (8.10.5 step 6.a)
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
         var obj = {};
 
         var proto = {
@@ -35,6 +33,5 @@ function testcase() {
 
         var afterWrite = (obj.property === "isWritable");
 
-        return beforeWrite === true && afterWrite === true;
-    }
-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-161.js b/test/built-ins/Object/defineProperty/15.2.3.6-3-161.js
index 9c1eb9e6b5c62642c3ddfadd8dab904fe00f39af..e2e626d34a55c42378a212f9c3669112c61770c3 100644
--- a/test/built-ins/Object/defineProperty/15.2.3.6-3-161.js
+++ b/test/built-ins/Object/defineProperty/15.2.3.6-3-161.js
@@ -7,10 +7,8 @@ description: >
     Object.defineProperty - 'writable' property in 'Attributes' is own
     accessor property that overrides an inherited accessor property
     (8.10.5 step 6.a)
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
         var obj = {};
 
         var proto = {};
@@ -38,6 +36,5 @@ function testcase() {
 
         var afterWrite = (obj.property === "isWritable");
 
-        return beforeWrite === true && afterWrite === true;
-    }
-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-165.js b/test/built-ins/Object/defineProperty/15.2.3.6-3-165.js
index 89b249cf85c1584bca652e4ddd9fe6b8dfcc5b10..3895b6f61facfc2a4e51fb7999db290620262f4e 100644
--- a/test/built-ins/Object/defineProperty/15.2.3.6-3-165.js
+++ b/test/built-ins/Object/defineProperty/15.2.3.6-3-165.js
@@ -7,10 +7,8 @@ description: >
     Object.defineProperty - 'Attributes' is a Function object which
     implements its own [[Get]] method to access the 'writable'
     property  (8.10.5 step 6.a)
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
         var obj = {};
 
         var funObj = function (a, b) {
@@ -27,6 +25,5 @@ function testcase() {
 
         var afterWrite = (obj.property === "isWritable");
 
-        return beforeWrite === true && afterWrite === true;
-    }
-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.js b/test/built-ins/Object/defineProperty/15.2.3.6-3-166.js
index 234489a79ee6908cfe5fcdefe0a2581ae44969c8..2781bbe76b3a8adb2b61535bac0528954d82f7ff 100644
--- a/test/built-ins/Object/defineProperty/15.2.3.6-3-166.js
+++ b/test/built-ins/Object/defineProperty/15.2.3.6-3-166.js
@@ -7,10 +7,8 @@ description: >
     Object.defineProperty - 'Attributes' is an Array 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 = { };
 
         var arrObj = [1, 2, 3];
@@ -25,6 +23,5 @@ function testcase() {
 
         var afterWrite = (obj.property === "isWritable");
 
-        return beforeWrite === true && afterWrite === true;
-    }
-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.js b/test/built-ins/Object/defineProperty/15.2.3.6-3-167.js
index 2f07f91a8d20b70693395a3e1e26dbf51e7c2f97..9514ee5227af1c0d6d431732d4b9df251e0cd9a9 100644
--- a/test/built-ins/Object/defineProperty/15.2.3.6-3-167.js
+++ b/test/built-ins/Object/defineProperty/15.2.3.6-3-167.js
@@ -7,10 +7,8 @@ description: >
     Object.defineProperty - 'Attributes' is a String 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 = {};
 
         var strObj = new String("abc");
@@ -25,6 +23,5 @@ function testcase() {
 
         var afterWrite = (obj.property === "isWritable");
 
-        return beforeWrite === true && afterWrite === true;
-    }
-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.js b/test/built-ins/Object/defineProperty/15.2.3.6-3-168.js
index 7c0e0b78b57f2203b84bac63777ab0fde054d3bb..a817213316d0df5c1886825aedf9f9e7d4d3ce8c 100644
--- a/test/built-ins/Object/defineProperty/15.2.3.6-3-168.js
+++ b/test/built-ins/Object/defineProperty/15.2.3.6-3-168.js
@@ -7,10 +7,8 @@ description: >
     Object.defineProperty - 'Attributes' is a Boolean 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 = { };
 
         var boolObj = new Boolean(true);
@@ -25,6 +23,5 @@ function testcase() {
 
         var afterWrite = (obj.property === "isWritable");
 
-        return beforeWrite === true && afterWrite === true;
-    }
-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.js b/test/built-ins/Object/defineProperty/15.2.3.6-3-169.js
index c041e1663b9f20dbcfb5ef5a9b5261a722e575e3..4fbbfc386fd470cfd72716ec2b0d2fd739fe4ed8 100644
--- a/test/built-ins/Object/defineProperty/15.2.3.6-3-169.js
+++ b/test/built-ins/Object/defineProperty/15.2.3.6-3-169.js
@@ -7,10 +7,8 @@ description: >
     Object.defineProperty - 'Attributes' is a Number 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 = { };
 
         var numObj = new Number(-2);
@@ -25,6 +23,5 @@ function testcase() {
 
         var afterWrite = (obj.property === "isWritable");
 
-        return beforeWrite === true && afterWrite === true;
-    }
-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-171.js b/test/built-ins/Object/defineProperty/15.2.3.6-3-171.js
index 6320fd4649020a7e705270df23c8f0639e6eda55..4cbcfcf9f82c998ba4fc82493129f961c2c15afc 100644
--- a/test/built-ins/Object/defineProperty/15.2.3.6-3-171.js
+++ b/test/built-ins/Object/defineProperty/15.2.3.6-3-171.js
@@ -7,10 +7,8 @@ description: >
     Object.defineProperty - 'Attributes' is a Date 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 = { };
 
         var dateObj = new Date();
@@ -25,6 +23,5 @@ function testcase() {
 
         var afterWrite = (obj.property === "isWritable");
 
-        return beforeWrite === true && afterWrite === true;
-    }
-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.js b/test/built-ins/Object/defineProperty/15.2.3.6-3-172.js
index 93c6043103fbbcdf78a09ae163311b3b67ae970e..8c1f6a605821f807ef6e7b91d71b62712bb56860 100644
--- a/test/built-ins/Object/defineProperty/15.2.3.6-3-172.js
+++ b/test/built-ins/Object/defineProperty/15.2.3.6-3-172.js
@@ -7,10 +7,8 @@ description: >
     Object.defineProperty - 'Attributes' is a RegExp 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 = { };
 
         var regObj = new RegExp();
@@ -25,6 +23,5 @@ function testcase() {
 
         var afterWrite = (obj.property === "isWritable");
 
-        return beforeWrite === true && afterWrite === true;
-    }
-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.js b/test/built-ins/Object/defineProperty/15.2.3.6-3-174.js
index d92558c7f44af750e46f58a612eb3caa111b2b7d..e29059c3bf2df3dc52b8c40d4254a3bea814eb0f 100644
--- a/test/built-ins/Object/defineProperty/15.2.3.6-3-174.js
+++ b/test/built-ins/Object/defineProperty/15.2.3.6-3-174.js
@@ -7,10 +7,8 @@ description: >
     Object.defineProperty - 'Attributes' is an Error 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 = { };
 
         var errObj = new Error();
@@ -25,6 +23,5 @@ function testcase() {
 
         var afterWrite = (obj.property === "isWritable");
 
-        return beforeWrite === true && afterWrite === true;
-    }
-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.js b/test/built-ins/Object/defineProperty/15.2.3.6-3-175.js
index 3655f5eec84dcc3f4af1dece63353a6bc562a2fe..f816f7acfca6c5a4e7cb5fa0d6211ff17aaa3fad 100644
--- a/test/built-ins/Object/defineProperty/15.2.3.6-3-175.js
+++ b/test/built-ins/Object/defineProperty/15.2.3.6-3-175.js
@@ -7,10 +7,8 @@ description: >
     Object.defineProperty - 'Attributes' is an Arguments object which
     implements its own [[Get]] method to access the 'writable'
     property  (8.10.5 step 6.a)
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
         var obj = {};
 
         var argObj = (function () { return arguments; })();
@@ -25,6 +23,5 @@ function testcase() {
 
         var afterWrite = (obj.property === "isWritable");
 
-        return beforeWrite === true && afterWrite === true;
-    }
-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-180.js b/test/built-ins/Object/defineProperty/15.2.3.6-3-180.js
index f2f00c7cf744496c730e97d51aabf8a11cb8fbb5..41365f9ce5ab80ffc40fcd3a943654f5d8823e9b 100644
--- a/test/built-ins/Object/defineProperty/15.2.3.6-3-180.js
+++ b/test/built-ins/Object/defineProperty/15.2.3.6-3-180.js
@@ -6,10 +6,8 @@ es5id: 15.2.3.6-3-180
 description: >
     Object.defineProperty - 'writable' property in 'Attributes' is
     true  (8.10.5 step 6.b)
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
         var obj = {};
 
         Object.defineProperty(obj, "property", { writable: true });
@@ -20,6 +18,5 @@ function testcase() {
 
         var afterWrite = (obj.property === "isWritable");
 
-        return beforeWrite === true && afterWrite === true;
-    }
-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-186.js b/test/built-ins/Object/defineProperty/15.2.3.6-3-186.js
index 641a8f703636b7febc4fa87b937079ed518695d6..1239edb9d4b0fd2dc9468a5d1ecf62181f606338 100644
--- a/test/built-ins/Object/defineProperty/15.2.3.6-3-186.js
+++ b/test/built-ins/Object/defineProperty/15.2.3.6-3-186.js
@@ -6,10 +6,8 @@ es5id: 15.2.3.6-3-186
 description: >
     Object.defineProperty - 'writable' property in 'Attributes' is a
     positive number  (8.10.5 step 6.b)
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
         var obj = {};
 
         Object.defineProperty(obj, "property", { writable: 12345 });
@@ -20,6 +18,5 @@ function testcase() {
 
         var afterWrite = (obj.property === "isWritable");
 
-        return beforeWrite === true && afterWrite === true;
-    }
-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-187.js b/test/built-ins/Object/defineProperty/15.2.3.6-3-187.js
index 6cc0843a8299638e90f503ed88f9f4e0942c78bf..91c91c7f574a2cb39cb6c085dc07a8615982b6a9 100644
--- a/test/built-ins/Object/defineProperty/15.2.3.6-3-187.js
+++ b/test/built-ins/Object/defineProperty/15.2.3.6-3-187.js
@@ -6,10 +6,8 @@ es5id: 15.2.3.6-3-187
 description: >
     Object.defineProperty - 'writable' property in 'Attributes' is a
     negative number  (8.10.5 step 6.b)
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
         var obj = {};
 
         Object.defineProperty(obj, "property", { writable: -12345 });
@@ -20,6 +18,5 @@ function testcase() {
 
         var afterWrite = (obj.property === "isWritable");
 
-        return beforeWrite === true && afterWrite === true;
-    }
-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-189.js b/test/built-ins/Object/defineProperty/15.2.3.6-3-189.js
index e533cc62bbf286964d6fdd6291874540a9175d20..c3da81e30d504404cc26c1328a018aa1e684d575 100644
--- a/test/built-ins/Object/defineProperty/15.2.3.6-3-189.js
+++ b/test/built-ins/Object/defineProperty/15.2.3.6-3-189.js
@@ -6,10 +6,8 @@ es5id: 15.2.3.6-3-189
 description: >
     Object.defineProperty - 'writable' property in 'Attributes' is a
     non-empty string  (8.10.5 step 6.b)
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
         var obj = {};
 
         Object.defineProperty(obj, "property", { writable: "      " });
@@ -20,6 +18,5 @@ function testcase() {
 
         var afterWrite = (obj.property === "isWritable");
 
-        return beforeWrite === true && afterWrite === true;
-    }
-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-190.js b/test/built-ins/Object/defineProperty/15.2.3.6-3-190.js
index d609930a68dc623641052c85a759569e13604f88..a87d465a006a6a7d3c73b1382d233ef91a2bfe80 100644
--- a/test/built-ins/Object/defineProperty/15.2.3.6-3-190.js
+++ b/test/built-ins/Object/defineProperty/15.2.3.6-3-190.js
@@ -6,10 +6,8 @@ es5id: 15.2.3.6-3-190
 description: >
     Object.defineProperty - 'writable' property in 'Attributes' is a
     Function object (8.10.5 step 6.b)
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
         var obj = {};
 
         Object.defineProperty(obj, "property", {
@@ -22,6 +20,5 @@ function testcase() {
 
         var afterWrite = (obj.property === "isWritable");
 
-        return beforeWrite === true && afterWrite === true;
-    }
-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-191.js b/test/built-ins/Object/defineProperty/15.2.3.6-3-191.js
index abb0f67295c0d301dd53889d9846b458ad7ae03e..0bed96abceefcb9c76e3d7a5a718cd3ef3159219 100644
--- a/test/built-ins/Object/defineProperty/15.2.3.6-3-191.js
+++ b/test/built-ins/Object/defineProperty/15.2.3.6-3-191.js
@@ -6,10 +6,8 @@ es5id: 15.2.3.6-3-191
 description: >
     Object.defineProperty - 'writable' property in 'Attributes' is an
     Array object (8.10.5 step 6.b)
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
         var obj = {};
 
         Object.defineProperty(obj, "property", { writable: [1, 2, 3] });
@@ -20,6 +18,5 @@ function testcase() {
 
         var afterWrite = (obj.property === "isWritable");
 
-        return beforeWrite === true && afterWrite === true;
-    }
-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-192.js b/test/built-ins/Object/defineProperty/15.2.3.6-3-192.js
index e3137fe3ddbe5702003538deb6d3893384b39139..86a87b4237d29a9080434d61a9c04fcc3480a20f 100644
--- a/test/built-ins/Object/defineProperty/15.2.3.6-3-192.js
+++ b/test/built-ins/Object/defineProperty/15.2.3.6-3-192.js
@@ -6,10 +6,8 @@ es5id: 15.2.3.6-3-192
 description: >
     Object.defineProperty - 'writable' property in 'Attributes' is a
     String object (8.10.5 step 6.b)
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
         var obj = {};
 
         Object.defineProperty(obj, "property", { writable: new String("bbq") });
@@ -20,6 +18,5 @@ function testcase() {
 
         var afterWrite = (obj.property === "isWritable");
 
-        return beforeWrite === true && afterWrite === true;
-    }
-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-193.js b/test/built-ins/Object/defineProperty/15.2.3.6-3-193.js
index bab0e5c305ebb6ccf4cf96e03b5854a124f3631a..66f9558d0256aa16489170448b28fe4b0ab81930 100644
--- a/test/built-ins/Object/defineProperty/15.2.3.6-3-193.js
+++ b/test/built-ins/Object/defineProperty/15.2.3.6-3-193.js
@@ -6,10 +6,8 @@ es5id: 15.2.3.6-3-193
 description: >
     Object.defineProperty - 'writable' property in 'Attributes' is a
     Boolean object (8.10.5 step 6.b)
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
         var obj = {};
 
         Object.defineProperty(obj, "property", { writable: new Boolean(true) });
@@ -20,6 +18,5 @@ function testcase() {
 
         var afterWrite = (obj.property === "isWritable");
 
-        return beforeWrite === true && afterWrite === true;
-    }
-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-194.js b/test/built-ins/Object/defineProperty/15.2.3.6-3-194.js
index 8c1013f03ca4d87a50ebe86d6b90dd1d46d60e80..df8ac1084c773edd6851fa82bd9d3a9915b615b4 100644
--- a/test/built-ins/Object/defineProperty/15.2.3.6-3-194.js
+++ b/test/built-ins/Object/defineProperty/15.2.3.6-3-194.js
@@ -6,10 +6,8 @@ es5id: 15.2.3.6-3-194
 description: >
     Object.defineProperty - 'writable' property in 'Attributes' is a
     Number object (8.10.5 step 6.b)
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
         var obj = {};
 
         Object.defineProperty(obj, "property", { writable: new Number(123) });
@@ -20,6 +18,5 @@ function testcase() {
 
         var afterWrite = (obj.property === "isWritable");
 
-        return beforeWrite === true && afterWrite === true;
-    }
-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-195.js b/test/built-ins/Object/defineProperty/15.2.3.6-3-195.js
index 68c0226d824286bbab6236287886c8bc6bd248c7..339bfc4c2ed335bc3f1232d171d29e4227e5e074 100644
--- a/test/built-ins/Object/defineProperty/15.2.3.6-3-195.js
+++ b/test/built-ins/Object/defineProperty/15.2.3.6-3-195.js
@@ -6,10 +6,8 @@ es5id: 15.2.3.6-3-195
 description: >
     Object.defineProperty - 'writable' property in 'Attributes' is the
     Math object (8.10.5 step 6.b)
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
         var obj = {};
 
         Object.defineProperty(obj, "property", { writable: Math });
@@ -20,6 +18,5 @@ function testcase() {
 
         var afterWrite = (obj.property === "isWritable");
 
-        return beforeWrite === true && afterWrite === true;
-    }
-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-196.js b/test/built-ins/Object/defineProperty/15.2.3.6-3-196.js
index 1fed11a0f8ee81bd9d6f13e1bf09daf831cfda1e..2ce077a6ef34826a3988643aefbffb294774fa7c 100644
--- a/test/built-ins/Object/defineProperty/15.2.3.6-3-196.js
+++ b/test/built-ins/Object/defineProperty/15.2.3.6-3-196.js
@@ -6,10 +6,8 @@ es5id: 15.2.3.6-3-196
 description: >
     Object.defineProperty - 'writable' property in 'Attributes' is a
     Date object (8.10.5 step 6.b)
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
         var obj = {};
 
         Object.defineProperty(obj, "property", { writable: new Date() });
@@ -20,6 +18,5 @@ function testcase() {
 
         var afterWrite = (obj.property === "isWritable");
 
-        return beforeWrite === true && afterWrite === true;
-    }
-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-197.js b/test/built-ins/Object/defineProperty/15.2.3.6-3-197.js
index 1b7d2416e5cce490633bd522b55eeadce0a6229e..550d69b6b5eac079f14b077a8cc38350154f6cf0 100644
--- a/test/built-ins/Object/defineProperty/15.2.3.6-3-197.js
+++ b/test/built-ins/Object/defineProperty/15.2.3.6-3-197.js
@@ -6,10 +6,8 @@ es5id: 15.2.3.6-3-197
 description: >
     Object.defineProperty - 'writable' property in 'Attributes' is a
     RegExp object (8.10.5 step 6.b)
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
         var obj = {};
 
         Object.defineProperty(obj, "property", {
@@ -22,6 +20,5 @@ function testcase() {
 
         var afterWrite = (obj.property === "isWritable");
 
-        return beforeWrite && afterWrite;
-    }
-runTestCase(testcase);
+assert(beforeWrite, 'beforeWrite !== true');
+assert(afterWrite, 'afterWrite !== true');
diff --git a/test/built-ins/Object/defineProperty/15.2.3.6-3-198.js b/test/built-ins/Object/defineProperty/15.2.3.6-3-198.js
index dbfc2e6436e127af14464e71679c0a16cc2fe96d..f5ccb8883054188e8d19c581a739134a3e506f9c 100644
--- a/test/built-ins/Object/defineProperty/15.2.3.6-3-198.js
+++ b/test/built-ins/Object/defineProperty/15.2.3.6-3-198.js
@@ -6,10 +6,8 @@ es5id: 15.2.3.6-3-198
 description: >
     Object.defineProperty - 'writable' property in 'Attributes' is the
     JSON object (8.10.5 step 6.b)
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
         var obj = {};
 
         Object.defineProperty(obj, "property", { writable: JSON });
@@ -20,6 +18,5 @@ function testcase() {
 
         var afterWrite = (obj.property === "isWritable");
 
-        return beforeWrite === true && afterWrite === true;
-    }
-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-199.js b/test/built-ins/Object/defineProperty/15.2.3.6-3-199.js
index c3bbdadc062b2c933dc860ef16dfad4d1890997a..ffd301e24ad0307927d78ddfc12c96b6791cb8d8 100644
--- a/test/built-ins/Object/defineProperty/15.2.3.6-3-199.js
+++ b/test/built-ins/Object/defineProperty/15.2.3.6-3-199.js
@@ -6,10 +6,8 @@ es5id: 15.2.3.6-3-199
 description: >
     Object.defineProperty - 'writable' property in 'Attributes' is a
     Error object (8.10.5 step 6.b)
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
         var obj = {};
 
         Object.defineProperty(obj, "property", { writable: new SyntaxError() });
@@ -20,6 +18,5 @@ function testcase() {
 
         var afterWrite = (obj.property === "isWritable");
 
-        return beforeWrite === true && afterWrite === true;
-    }
-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-20.js b/test/built-ins/Object/defineProperty/15.2.3.6-3-20.js
index 6fb998df078dc234d2f36d5e898fa9fa278598bc..1873ba03ef12aba15ca0d73cdb13814b87d4b839 100644
--- a/test/built-ins/Object/defineProperty/15.2.3.6-3-20.js
+++ b/test/built-ins/Object/defineProperty/15.2.3.6-3-20.js
@@ -6,11 +6,8 @@ es5id: 15.2.3.6-3-20
 description: >
     Object.defineProperty - 'enumerable' property in 'Attributes' is
     present (8.10.5 step 3)
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
-
         var obj = {};
 
         var accessed = false;
@@ -23,6 +20,6 @@ function testcase() {
                 accessed = true;
             }
         }
-        return !accessed && obj.hasOwnProperty("property");
-    }
-runTestCase(testcase);
+
+assert.sameValue(accessed, false, 'accessed');
+assert(obj.hasOwnProperty("property"), 'obj.hasOwnProperty("property") !== true');
diff --git a/test/built-ins/Object/defineProperty/15.2.3.6-3-200.js b/test/built-ins/Object/defineProperty/15.2.3.6-3-200.js
index d744016c760e9086e7aa353ffb66a76da80eaefa..286cb4f5d58ddc3bc611ca44539b89c397aeed05 100644
--- a/test/built-ins/Object/defineProperty/15.2.3.6-3-200.js
+++ b/test/built-ins/Object/defineProperty/15.2.3.6-3-200.js
@@ -6,10 +6,8 @@ es5id: 15.2.3.6-3-200
 description: >
     Object.defineProperty - 'writable' property in 'Attributes' is the
     Argument object (8.10.5 step 6.b)
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
         var obj = {};
 
         var argObj = (function () { return arguments; })(1, true, "a");
@@ -22,6 +20,5 @@ function testcase() {
 
         var afterWrite = (obj.property === "isWritable");
 
-        return beforeWrite === true && afterWrite === true;
-    }
-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-202.js b/test/built-ins/Object/defineProperty/15.2.3.6-3-202.js
index c48f399e211248cb669a1acf951902bca4e74eae..1a92e780e1975cdbe5e402fcb09775b2c6b68586 100644
--- a/test/built-ins/Object/defineProperty/15.2.3.6-3-202.js
+++ b/test/built-ins/Object/defineProperty/15.2.3.6-3-202.js
@@ -6,12 +6,9 @@ es5id: 15.2.3.6-3-202
 description: >
     Object.defineProperty - 'writable' property in 'Attributes' is the
     global object (8.10.5 step 6.b)
-includes:
-    - runTestCase.js
-    - fnGlobalObject.js
+includes: [fnGlobalObject.js]
 ---*/
 
-function testcase() {
         var obj = {};
 
         Object.defineProperty(obj, "property", {
@@ -24,6 +21,5 @@ function testcase() {
 
         var afterWrite = (obj.property === "isWritable");
 
-        return beforeWrite === true && afterWrite === true;
-    }
-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-203.js b/test/built-ins/Object/defineProperty/15.2.3.6-3-203.js
index d9485f69e6b44f122acfc03e65a6e9a84e650811..cb0c0e49729cffc78022c45d22aee4afb7019e37 100644
--- a/test/built-ins/Object/defineProperty/15.2.3.6-3-203.js
+++ b/test/built-ins/Object/defineProperty/15.2.3.6-3-203.js
@@ -7,10 +7,8 @@ description: >
     Object.defineProperty - 'writable' property in 'Attributes' is
     treated as true when it is a string(value is 'false') (8.10.5 step
     6.b)
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
         var obj = {};
 
         Object.defineProperty(obj, "property", { writable: "false" });
@@ -21,6 +19,5 @@ function testcase() {
 
         var afterWrite = (obj.property === "isWritable");
 
-        return beforeWrite === true && afterWrite === true;
-    }
-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-204.js b/test/built-ins/Object/defineProperty/15.2.3.6-3-204.js
index f1d9360652d0aacaaf07eee3e297d064888460ab..a8d61b311c610886b5958cd02c49b707ce78624d 100644
--- a/test/built-ins/Object/defineProperty/15.2.3.6-3-204.js
+++ b/test/built-ins/Object/defineProperty/15.2.3.6-3-204.js
@@ -6,10 +6,8 @@ es5id: 15.2.3.6-3-204
 description: >
     Object.defineProperty - 'writable' property in 'Attributes' is
     treated as true when it is new Boolean(false) (8.10.5 step 6.b)
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
         var obj = {};
 
         Object.defineProperty(obj, "property", { writable: new Boolean(false) });
@@ -20,6 +18,5 @@ function testcase() {
 
         var afterWrite = (obj.property === "isWritable");
 
-        return beforeWrite === true && afterWrite === true;
-    }
-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-205.js b/test/built-ins/Object/defineProperty/15.2.3.6-3-205.js
index d8ee0f61b8a99159307b5f72c4771a20cadf5008..4d1f8183b79176dd6ffe141f4223fa4cce4cddd8 100644
--- a/test/built-ins/Object/defineProperty/15.2.3.6-3-205.js
+++ b/test/built-ins/Object/defineProperty/15.2.3.6-3-205.js
@@ -6,10 +6,8 @@ es5id: 15.2.3.6-3-205
 description: >
     Object.defineProperty - 'get' property in 'Attributes' is present
     (8.10.5 step 7)
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
         var obj = {};
 
         Object.defineProperty(obj, "property", {
@@ -18,6 +16,4 @@ function testcase() {
             }
         });
 
-        return obj.property === "present";
-    }
-runTestCase(testcase);
+assert.sameValue(obj.property, "present", 'obj.property');
diff --git a/test/built-ins/Object/defineProperty/15.2.3.6-3-206.js b/test/built-ins/Object/defineProperty/15.2.3.6-3-206.js
index bb8d9995e16132fdd10a32910d742b6216f242c7..004e92a78d8c25396298de7cef61788412320271 100644
--- a/test/built-ins/Object/defineProperty/15.2.3.6-3-206.js
+++ b/test/built-ins/Object/defineProperty/15.2.3.6-3-206.js
@@ -6,16 +6,13 @@ es5id: 15.2.3.6-3-206
 description: >
     Object.defineProperty - 'get' property in 'Attributes' is not
     present (8.10.5 step 7)
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
         var obj = {};
 
         Object.defineProperty(obj, "property", {
             set: function () {}
         });
 
-        return typeof obj.property === "undefined" && obj.hasOwnProperty("property");
-    }
-runTestCase(testcase);
+assert.sameValue(typeof obj.property, "undefined", 'typeof obj.property');
+assert(obj.hasOwnProperty("property"), 'obj.hasOwnProperty("property") !== true');
diff --git a/test/built-ins/Object/defineProperty/15.2.3.6-3-207.js b/test/built-ins/Object/defineProperty/15.2.3.6-3-207.js
index 954ed3da21122c363006ceb587e72f123c7ae3e5..720e1e1c0b8759dae9326d25ce08fcb55f704cff 100644
--- a/test/built-ins/Object/defineProperty/15.2.3.6-3-207.js
+++ b/test/built-ins/Object/defineProperty/15.2.3.6-3-207.js
@@ -6,10 +6,8 @@ es5id: 15.2.3.6-3-207
 description: >
     Object.defineProperty - 'get' property in 'Attributes' is own data
     property (8.10.5 step 7.a)
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
         var obj = {};
         var attributes = {
             get: function () {
@@ -19,6 +17,4 @@ function testcase() {
 
         Object.defineProperty(obj, "property", attributes);
 
-        return obj.property === "ownDataProperty";
-    }
-runTestCase(testcase);
+assert.sameValue(obj.property, "ownDataProperty", 'obj.property');
diff --git a/test/built-ins/Object/defineProperty/15.2.3.6-3-208.js b/test/built-ins/Object/defineProperty/15.2.3.6-3-208.js
index f2effda83f917cd9b5bd0b7a5b14d189f258c2db..3be19510af59955afe5b8bd2963a43f47bb42788 100644
--- a/test/built-ins/Object/defineProperty/15.2.3.6-3-208.js
+++ b/test/built-ins/Object/defineProperty/15.2.3.6-3-208.js
@@ -6,10 +6,8 @@ es5id: 15.2.3.6-3-208
 description: >
     Object.defineProperty - 'get' property in 'Attributes' is an
     inherited data property (8.10.5 step 7.a)
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
         var obj = {};
         var proto = {
             get: function () {
@@ -24,6 +22,4 @@ function testcase() {
 
         Object.defineProperty(obj, "property", child);
 
-        return obj.property === "inheritedDataProperty";
-    }
-runTestCase(testcase);
+assert.sameValue(obj.property, "inheritedDataProperty", 'obj.property');
diff --git a/test/built-ins/Object/defineProperty/15.2.3.6-3-209.js b/test/built-ins/Object/defineProperty/15.2.3.6-3-209.js
index 4ef877274860642d74083114e40606c5068dacfd..06e83faf6f09855d80c0abcb08cf7e4b035f11f5 100644
--- a/test/built-ins/Object/defineProperty/15.2.3.6-3-209.js
+++ b/test/built-ins/Object/defineProperty/15.2.3.6-3-209.js
@@ -7,10 +7,8 @@ description: >
     Object.defineProperty - 'get' property in 'Attributes' is own data
     property that overrides an inherited data property (8.10.5 step
     7.a)
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
         var obj = {};
         var proto = {
             get: function () {
@@ -28,6 +26,4 @@ function testcase() {
 
         Object.defineProperty(obj, "property", child);
 
-        return obj.property === "ownDataProperty";
-    }
-runTestCase(testcase);
+assert.sameValue(obj.property, "ownDataProperty", 'obj.property');
diff --git a/test/built-ins/Object/defineProperty/15.2.3.6-3-21.js b/test/built-ins/Object/defineProperty/15.2.3.6-3-21.js
index 700b211e0e4f0bcac30a3df8877e86c6283d06ce..24baf80a031cdf5397510be743f5e8319f67f9da 100644
--- a/test/built-ins/Object/defineProperty/15.2.3.6-3-21.js
+++ b/test/built-ins/Object/defineProperty/15.2.3.6-3-21.js
@@ -6,11 +6,8 @@ es5id: 15.2.3.6-3-21
 description: >
     Object.defineProperty - 'enumerable' property in 'Attributes' is
     not present (8.10.5 step 3)
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
-
         var obj = {};
 
         var attr = {};
@@ -22,6 +19,5 @@ function testcase() {
                 accessed = true;
             }
         }
-        return !accessed;
-    }
-runTestCase(testcase);
+
+assert.sameValue(accessed, false, 'accessed');
diff --git a/test/built-ins/Object/defineProperty/15.2.3.6-3-210.js b/test/built-ins/Object/defineProperty/15.2.3.6-3-210.js
index c94409911fb09c29ae4adb0fc6e705b83effe699..52122a6292261f21a768d12fffcaf84ab1e1c75e 100644
--- a/test/built-ins/Object/defineProperty/15.2.3.6-3-210.js
+++ b/test/built-ins/Object/defineProperty/15.2.3.6-3-210.js
@@ -7,10 +7,8 @@ description: >
     Object.defineProperty - 'get' property in 'Attributes' is own data
     property that overrides an inherited accessor property (8.10.5
     step 7.a)
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
         var obj = {};
         var proto = {};
         var fun = function () {
@@ -34,6 +32,4 @@ function testcase() {
 
         Object.defineProperty(obj, "property", child);
 
-        return obj.property === "ownDataProperty";
-    }
-runTestCase(testcase);
+assert.sameValue(obj.property, "ownDataProperty", 'obj.property');
diff --git a/test/built-ins/Object/defineProperty/15.2.3.6-3-211.js b/test/built-ins/Object/defineProperty/15.2.3.6-3-211.js
index ce1254ff13e9b6563fd4cf2dd1af68e4932490aa..543ef14fbbe8e5e8b5f33d2c6219c39be52837be 100644
--- a/test/built-ins/Object/defineProperty/15.2.3.6-3-211.js
+++ b/test/built-ins/Object/defineProperty/15.2.3.6-3-211.js
@@ -6,10 +6,8 @@ es5id: 15.2.3.6-3-211
 description: >
     Object.defineProperty - 'get' property in 'Attributes' is own
     accessor property (8.10.5 step 7.a)
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
         var obj = {};
 
         var attributes = {};
@@ -23,6 +21,4 @@ function testcase() {
 
         Object.defineProperty(obj, "property", attributes);
 
-        return obj.property === "ownAccessorProperty";
-    }
-runTestCase(testcase);
+assert.sameValue(obj.property, "ownAccessorProperty", 'obj.property');
diff --git a/test/built-ins/Object/defineProperty/15.2.3.6-3-212.js b/test/built-ins/Object/defineProperty/15.2.3.6-3-212.js
index 7ec4f0f1e108721bf8f9b2b10575d46f592aa828..9cf8718b8a37cece291e01fe3796b038e49d85e3 100644
--- a/test/built-ins/Object/defineProperty/15.2.3.6-3-212.js
+++ b/test/built-ins/Object/defineProperty/15.2.3.6-3-212.js
@@ -6,10 +6,8 @@ es5id: 15.2.3.6-3-212
 description: >
     Object.defineProperty - 'get' property in 'Attributes' is an
     inherited accessor property (8.10.5 step 7.a)
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
         var obj = {};
         var proto = {};
         Object.defineProperty(proto, "get", {
@@ -27,6 +25,4 @@ function testcase() {
 
         Object.defineProperty(obj, "property", child);
 
-        return obj.property === "inheritedAccessorProperty";
-    }
-runTestCase(testcase);
+assert.sameValue(obj.property, "inheritedAccessorProperty", 'obj.property');
diff --git a/test/built-ins/Object/defineProperty/15.2.3.6-3-213.js b/test/built-ins/Object/defineProperty/15.2.3.6-3-213.js
index 3793e6032f151ff07187cab1268270ec86a2a91d..2b51e1554bbb18294a66a958d737244f7768864a 100644
--- a/test/built-ins/Object/defineProperty/15.2.3.6-3-213.js
+++ b/test/built-ins/Object/defineProperty/15.2.3.6-3-213.js
@@ -7,10 +7,8 @@ description: >
     Object.defineProperty - 'get' property in 'Attributes' is own
     accessor property that overrides an inherited data property
     (8.10.5 step 7.a)
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
         var obj = {};
         var proto = {
             get: function () {
@@ -32,6 +30,4 @@ function testcase() {
 
         Object.defineProperty(obj, "property", child);
 
-        return obj.property === "ownAccessorProperty";
-    }
-runTestCase(testcase);
+assert.sameValue(obj.property, "ownAccessorProperty", 'obj.property');
diff --git a/test/built-ins/Object/defineProperty/15.2.3.6-3-214.js b/test/built-ins/Object/defineProperty/15.2.3.6-3-214.js
index a2bfe24c1140b0dd56abe98d73de814cda812352..b740fedec07e1890d3f042a453cdbf5ef9a83f14 100644
--- a/test/built-ins/Object/defineProperty/15.2.3.6-3-214.js
+++ b/test/built-ins/Object/defineProperty/15.2.3.6-3-214.js
@@ -7,10 +7,8 @@ description: >
     Object.defineProperty - 'get' property in 'Attributes' is own
     accessor property that overrides an inherited accessor property
     (8.10.5 step 7.a)
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
         var obj = {};
         var proto = {};
         Object.defineProperty(proto, "get", {
@@ -35,6 +33,4 @@ function testcase() {
 
         Object.defineProperty(obj, "property", child);
 
-        return obj.property === "ownAccessorProperty";
-    }
-runTestCase(testcase);
+assert.sameValue(obj.property, "ownAccessorProperty", 'obj.property');
diff --git a/test/built-ins/Object/defineProperty/15.2.3.6-3-215.js b/test/built-ins/Object/defineProperty/15.2.3.6-3-215.js
index 551e510b7e718c2cf77d4e8597d851cf33772e3e..0e03885d01d88ffc956db386e96f9a2bd51c6dd1 100644
--- a/test/built-ins/Object/defineProperty/15.2.3.6-3-215.js
+++ b/test/built-ins/Object/defineProperty/15.2.3.6-3-215.js
@@ -6,10 +6,8 @@ es5id: 15.2.3.6-3-215
 description: >
     Object.defineProperty - 'get' property in 'Attributes' is own
     accessor property without a get function (8.10.5 step 7.a)
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
         var obj = {};
 
         var attributes = {};
@@ -19,6 +17,5 @@ function testcase() {
 
         Object.defineProperty(obj, "property", attributes);
 
-        return typeof obj.property === "undefined" && obj.hasOwnProperty("property");
-    }
-runTestCase(testcase);
+assert.sameValue(typeof obj.property, "undefined", 'typeof obj.property');
+assert(obj.hasOwnProperty("property"), 'obj.hasOwnProperty("property") !== true');
diff --git a/test/built-ins/Object/defineProperty/15.2.3.6-3-216.js b/test/built-ins/Object/defineProperty/15.2.3.6-3-216.js
index b866c74316a205853d6f8efe42dc3e343f5e9c7d..f80e5aa703c3feebb096aa7ec72f7452ad0f0bed 100644
--- a/test/built-ins/Object/defineProperty/15.2.3.6-3-216.js
+++ b/test/built-ins/Object/defineProperty/15.2.3.6-3-216.js
@@ -7,10 +7,8 @@ description: >
     Object.defineProperty - 'get' property in 'Attributes' is own
     accessor property(without a get function) that overrides an
     inherited accessor property (8.10.5 step 7.a)
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
         var obj = {};
         var proto = {};
         Object.defineProperty(proto, "get", {
@@ -31,6 +29,5 @@ function testcase() {
 
         Object.defineProperty(obj, "property", child);
 
-        return obj.hasOwnProperty("property") && typeof obj.property === "undefined";
-    }
-runTestCase(testcase);
+assert(obj.hasOwnProperty("property"), 'obj.hasOwnProperty("property") !== true');
+assert.sameValue(typeof obj.property, "undefined", 'typeof obj.property');
diff --git a/test/built-ins/Object/defineProperty/15.2.3.6-3-217.js b/test/built-ins/Object/defineProperty/15.2.3.6-3-217.js
index 8eb3942d62ad4ca8f89e4fa4ca4490bd50ceb6bd..4454a148eee4483c86c228f55097eb2277bcc5d3 100644
--- a/test/built-ins/Object/defineProperty/15.2.3.6-3-217.js
+++ b/test/built-ins/Object/defineProperty/15.2.3.6-3-217.js
@@ -7,10 +7,8 @@ description: >
     Object.defineProperty - 'get' property in 'Attributes' is an
     inherited accessor property without a get function (8.10.5 step
     7.a)
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
         var obj = {};
         var proto = {};
         Object.defineProperty(proto, "get", {
@@ -24,6 +22,5 @@ function testcase() {
 
         Object.defineProperty(obj, "property", child);
 
-        return obj.hasOwnProperty("property") && typeof obj.property === "undefined";
-    }
-runTestCase(testcase);
+assert(obj.hasOwnProperty("property"), 'obj.hasOwnProperty("property") !== true');
+assert.sameValue(typeof obj.property, "undefined", 'typeof obj.property');
diff --git a/test/built-ins/Object/defineProperty/15.2.3.6-3-218.js b/test/built-ins/Object/defineProperty/15.2.3.6-3-218.js
index 813608010e7103fbe34ee0968f81561b1d654515..4b1b50bb77df28cadf928a4d78fbb29bec93eeea 100644
--- a/test/built-ins/Object/defineProperty/15.2.3.6-3-218.js
+++ b/test/built-ins/Object/defineProperty/15.2.3.6-3-218.js
@@ -7,10 +7,8 @@ description: >
     Object.defineProperty - 'Attributes' is a Function object which
     implements its own [[Get]] method to access the 'get' property
     (8.10.5 step 7.a)
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
         var obj = {};
 
         var funObj = function () { };
@@ -21,6 +19,4 @@ function testcase() {
 
         Object.defineProperty(obj, "property", funObj);
 
-        return obj.property === "functionGetProperty";
-    }
-runTestCase(testcase);
+assert.sameValue(obj.property, "functionGetProperty", 'obj.property');
diff --git a/test/built-ins/Object/defineProperty/15.2.3.6-3-219.js b/test/built-ins/Object/defineProperty/15.2.3.6-3-219.js
index d424bd86786c0b0f6512bddf055c5251ba51e892..4586f5b9df376f9a6f81cec0961611e5807ad4cf 100644
--- a/test/built-ins/Object/defineProperty/15.2.3.6-3-219.js
+++ b/test/built-ins/Object/defineProperty/15.2.3.6-3-219.js
@@ -7,10 +7,8 @@ description: >
     Object.defineProperty - 'Attributes' is an Array 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 = {};
 
         var arrObj = [];
@@ -21,6 +19,4 @@ function testcase() {
 
         Object.defineProperty(obj, "property", arrObj);
 
-        return obj.property === "arrayGetProperty";
-    }
-runTestCase(testcase);
+assert.sameValue(obj.property, "arrayGetProperty", 'obj.property');
diff --git a/test/built-ins/Object/defineProperty/15.2.3.6-3-22.js b/test/built-ins/Object/defineProperty/15.2.3.6-3-22.js
index 18c385f654a25025001cd460f432ed6a08077f11..e09e9b43bdd95c062bbd5fe6281ab8bd0bd4d2eb 100644
--- a/test/built-ins/Object/defineProperty/15.2.3.6-3-22.js
+++ b/test/built-ins/Object/defineProperty/15.2.3.6-3-22.js
@@ -6,10 +6,8 @@ es5id: 15.2.3.6-3-22
 description: >
     Object.defineProperty - 'enumerable' property in 'Attributes' is
     own data property (8.10.5 step 3.a)
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
         var obj = {};
         var accessed = false;
 
@@ -22,6 +20,5 @@ function testcase() {
                 accessed = true;
             }
         }
-        return accessed;
-    }
-runTestCase(testcase);
+
+assert(accessed, 'accessed !== true');
diff --git a/test/built-ins/Object/defineProperty/15.2.3.6-3-220.js b/test/built-ins/Object/defineProperty/15.2.3.6-3-220.js
index 1388b6ef45aef6bda8285e47fe83a4beee6f426d..90284ea2ddaa2b076b5dd43850d56966d245ffdf 100644
--- a/test/built-ins/Object/defineProperty/15.2.3.6-3-220.js
+++ b/test/built-ins/Object/defineProperty/15.2.3.6-3-220.js
@@ -7,10 +7,8 @@ description: >
     Object.defineProperty - 'Attributes' is a String 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 = {};
 
         var strObj = new String();
@@ -21,6 +19,4 @@ function testcase() {
 
         Object.defineProperty(obj, "property", strObj);
 
-        return obj.property === "stringGetProperty";
-    }
-runTestCase(testcase);
+assert.sameValue(obj.property, "stringGetProperty", 'obj.property');
diff --git a/test/built-ins/Object/defineProperty/15.2.3.6-3-221.js b/test/built-ins/Object/defineProperty/15.2.3.6-3-221.js
index c3a6f5464c1d38ba58f895e4dc7f40774d9269b6..d23d5d32a623f741e2ba271f5f27559f40b23c3d 100644
--- a/test/built-ins/Object/defineProperty/15.2.3.6-3-221.js
+++ b/test/built-ins/Object/defineProperty/15.2.3.6-3-221.js
@@ -7,10 +7,8 @@ description: >
     Object.defineProperty - 'Attributes' is a Boolean 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 = {};
 
         var boolObj = new Boolean(true);
@@ -21,6 +19,4 @@ function testcase() {
 
         Object.defineProperty(obj, "property", boolObj);
 
-        return obj.property === "booleanGetProperty";
-    }
-runTestCase(testcase);
+assert.sameValue(obj.property, "booleanGetProperty", 'obj.property');
diff --git a/test/built-ins/Object/defineProperty/15.2.3.6-3-222.js b/test/built-ins/Object/defineProperty/15.2.3.6-3-222.js
index a2978c19e91563557eee997fc587950f6e62cb49..53996912347da7060500e7f0bdf1b1b3e2c94701 100644
--- a/test/built-ins/Object/defineProperty/15.2.3.6-3-222.js
+++ b/test/built-ins/Object/defineProperty/15.2.3.6-3-222.js
@@ -7,10 +7,8 @@ description: >
     Object.defineProperty - 'Attributes' is a Number 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 = {};
 
         var numObj = new Number(-2);
@@ -21,6 +19,4 @@ function testcase() {
 
         Object.defineProperty(obj, "property", numObj);
 
-        return obj.property === "numberGetProperty";
-    }
-runTestCase(testcase);
+assert.sameValue(obj.property, "numberGetProperty", 'obj.property');
diff --git a/test/built-ins/Object/defineProperty/15.2.3.6-3-224.js b/test/built-ins/Object/defineProperty/15.2.3.6-3-224.js
index bffc291f59deab7ebb05dbf086c6fa5c88e5376f..aff1cffe09e98cd94d7d2306a5673699db7dff86 100644
--- a/test/built-ins/Object/defineProperty/15.2.3.6-3-224.js
+++ b/test/built-ins/Object/defineProperty/15.2.3.6-3-224.js
@@ -7,10 +7,8 @@ description: >
     Object.defineProperty - 'Attributes' is a Date 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 = {};
 
         var dateObj = new Date();
@@ -21,6 +19,4 @@ function testcase() {
 
         Object.defineProperty(obj, "property", dateObj);
 
-        return obj.property === "dateGetProperty";
-    }
-runTestCase(testcase);
+assert.sameValue(obj.property, "dateGetProperty", 'obj.property');
diff --git a/test/built-ins/Object/defineProperty/15.2.3.6-3-225.js b/test/built-ins/Object/defineProperty/15.2.3.6-3-225.js
index 05e477ab963b8ce0b0dba2d2b141a38fc55634d7..df394a6422108ef26d59342b5f547bfbcb2f2e08 100644
--- a/test/built-ins/Object/defineProperty/15.2.3.6-3-225.js
+++ b/test/built-ins/Object/defineProperty/15.2.3.6-3-225.js
@@ -7,10 +7,8 @@ description: >
     Object.defineProperty - 'Attributes' is a RegExp 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 = {};
 
         var regObj = new RegExp();
@@ -21,6 +19,4 @@ function testcase() {
 
         Object.defineProperty(obj, "property", regObj);
 
-        return obj.property === "regExpGetProperty";
-    }
-runTestCase(testcase);
+assert.sameValue(obj.property, "regExpGetProperty", 'obj.property');
diff --git a/test/built-ins/Object/defineProperty/15.2.3.6-3-227.js b/test/built-ins/Object/defineProperty/15.2.3.6-3-227.js
index c1c524dd5df10f8dff8698607a0838631a43acd5..a61ca0f0c49a5c860ec78e2b23a133036b8b569a 100644
--- a/test/built-ins/Object/defineProperty/15.2.3.6-3-227.js
+++ b/test/built-ins/Object/defineProperty/15.2.3.6-3-227.js
@@ -7,10 +7,8 @@ description: >
     Object.defineProperty - 'Attributes' is an Error 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 = {};
 
         var errObj = new Error();
@@ -21,6 +19,4 @@ function testcase() {
 
         Object.defineProperty(obj, "property", errObj);
 
-        return obj.property === "errorGetProperty";
-    }
-runTestCase(testcase);
+assert.sameValue(obj.property, "errorGetProperty", 'obj.property');
diff --git a/test/built-ins/Object/defineProperty/15.2.3.6-3-228.js b/test/built-ins/Object/defineProperty/15.2.3.6-3-228.js
index 15a13c135d2b66ba6107b07fe846d28432b7168b..abacba3aa981ce48e7953912dd822744c879907b 100644
--- a/test/built-ins/Object/defineProperty/15.2.3.6-3-228.js
+++ b/test/built-ins/Object/defineProperty/15.2.3.6-3-228.js
@@ -7,10 +7,8 @@ description: >
     Object.defineProperty - 'Attributes' is an Arguments object which
     implements its own [[Get]] method to access the 'get' property
     (8.10.5 step 7.a)
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
         var obj = {};
 
         var argObj = (function () { return arguments; })();
@@ -21,6 +19,4 @@ function testcase() {
 
         Object.defineProperty(obj, "property", argObj);
 
-        return obj.property === "argumentGetProperty";
-    }
-runTestCase(testcase);
+assert.sameValue(obj.property, "argumentGetProperty", 'obj.property');
diff --git a/test/built-ins/Object/defineProperty/15.2.3.6-3-23.js b/test/built-ins/Object/defineProperty/15.2.3.6-3-23.js
index ed712ea3ed310c4a484848a189b95820981e107a..bb1b20d09bd596b73b27a1bbd577ddfcebfd6e37 100644
--- a/test/built-ins/Object/defineProperty/15.2.3.6-3-23.js
+++ b/test/built-ins/Object/defineProperty/15.2.3.6-3-23.js
@@ -6,10 +6,8 @@ es5id: 15.2.3.6-3-23
 description: >
     Object.defineProperty - 'enumerable' property in 'Attributes' is
     an inherited data property (8.10.5 step 3.a)
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
         var obj = {};
         var accessed = false;
 
@@ -30,6 +28,5 @@ function testcase() {
                 accessed = true;
             }
         }
-        return accessed;
-    }
-runTestCase(testcase);
+
+assert(accessed, 'accessed !== true');
diff --git a/test/built-ins/Object/defineProperty/15.2.3.6-3-231.js b/test/built-ins/Object/defineProperty/15.2.3.6-3-231.js
index a323fbfff81719d10c8ff18b427b0d69101b2d82..3352bff3c0d7f16da9fb5100d8319e7ce2daa821 100644
--- a/test/built-ins/Object/defineProperty/15.2.3.6-3-231.js
+++ b/test/built-ins/Object/defineProperty/15.2.3.6-3-231.js
@@ -6,16 +6,13 @@ es5id: 15.2.3.6-3-231
 description: >
     Object.defineProperty - value of 'get' property in 'Attributes' is
     undefined (8.10.5 step 7.b)
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
         var obj = {};
 
         Object.defineProperty(obj, "property", {
             get: undefined
         });
 
-        return obj.hasOwnProperty("property") && typeof obj.property === "undefined";
-    }
-runTestCase(testcase);
+assert(obj.hasOwnProperty("property"), 'obj.hasOwnProperty("property") !== true');
+assert.sameValue(typeof obj.property, "undefined", 'typeof obj.property');
diff --git a/test/built-ins/Object/defineProperty/15.2.3.6-3-232.js b/test/built-ins/Object/defineProperty/15.2.3.6-3-232.js
index 6aa61c6540c35a8cbbf43e261aae5436844cecda..1556b1c7b6289bbb9823646000c6a2e8aa26ad25 100644
--- a/test/built-ins/Object/defineProperty/15.2.3.6-3-232.js
+++ b/test/built-ins/Object/defineProperty/15.2.3.6-3-232.js
@@ -6,10 +6,8 @@ es5id: 15.2.3.6-3-232
 description: >
     Object.defineProperty - value of 'get' property in 'Attributes' is
     a function (8.10.5 step 7.b)
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
         var obj = {};
 
         Object.defineProperty(obj, "property", {
@@ -18,6 +16,5 @@ function testcase() {
             }
         });
 
-        return obj.hasOwnProperty("property") && obj.property === "getFunction";
-    }
-runTestCase(testcase);
+assert(obj.hasOwnProperty("property"), 'obj.hasOwnProperty("property") !== true');
+assert.sameValue(obj.property, "getFunction", 'obj.property');
diff --git a/test/built-ins/Object/defineProperty/15.2.3.6-3-235.js b/test/built-ins/Object/defineProperty/15.2.3.6-3-235.js
index cdfd17885d66a965d8f7048240fc711e42f90e81..e4b65b842c8f4e1f7b2f69ea3aaec0bfec3b05c0 100644
--- a/test/built-ins/Object/defineProperty/15.2.3.6-3-235.js
+++ b/test/built-ins/Object/defineProperty/15.2.3.6-3-235.js
@@ -6,10 +6,8 @@ es5id: 15.2.3.6-3-235
 description: >
     Object.defineProperty - 'set' property in 'Attributes' is present
     (8.10.5 step 8)
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
         var obj = {};
         var data = "data";
 
@@ -21,6 +19,5 @@ function testcase() {
 
         obj.property = "overrideData";
 
-        return obj.hasOwnProperty("property") && data === "overrideData";
-    }
-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-237.js b/test/built-ins/Object/defineProperty/15.2.3.6-3-237.js
index 3606bfd82adf2453a3540a899b14db003fd28b69..6f940328bd20c282fa3749cc46281aaaa823d6a7 100644
--- a/test/built-ins/Object/defineProperty/15.2.3.6-3-237.js
+++ b/test/built-ins/Object/defineProperty/15.2.3.6-3-237.js
@@ -6,10 +6,8 @@ es5id: 15.2.3.6-3-237
 description: >
     Object.defineProperty - 'set' property in 'Attributes' is own data
     property (8.10.5 step 8.a)
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
         var obj = {};
         var data = "data";
 
@@ -21,6 +19,5 @@ function testcase() {
 
         obj.property = "overrideData";
 
-        return obj.hasOwnProperty("property") && data === "overrideData";
-    }
-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-238.js b/test/built-ins/Object/defineProperty/15.2.3.6-3-238.js
index 688f18d70fc73bd4730e1277c79e916c9f9ff62e..ee2a0704c586f17ad80360c40f3c11f1dfa9dd53 100644
--- a/test/built-ins/Object/defineProperty/15.2.3.6-3-238.js
+++ b/test/built-ins/Object/defineProperty/15.2.3.6-3-238.js
@@ -6,10 +6,8 @@ es5id: 15.2.3.6-3-238
 description: >
     Object.defineProperty - 'set' property in 'Attributes' is an
     inherited data property (8.10.5 step 8.a)
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
         var obj = {};
         var data = "data";
         var proto = {
@@ -27,6 +25,5 @@ function testcase() {
 
         obj.property = "overrideData";
 
-        return obj.hasOwnProperty("property") && data === "overrideData";
-    }
-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-239.js b/test/built-ins/Object/defineProperty/15.2.3.6-3-239.js
index c0ad75f037d6ecf0cb7bd61d19b65b682363810d..fc8ab6600d40a488b37c8c858e4c8119221d4e37 100644
--- a/test/built-ins/Object/defineProperty/15.2.3.6-3-239.js
+++ b/test/built-ins/Object/defineProperty/15.2.3.6-3-239.js
@@ -7,10 +7,8 @@ description: >
     Object.defineProperty - 'set' property in 'Attributes' is own data
     property that overrides an inherited data property (8.10.5 step
     8.a)
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
         var obj = {};
         var data1 = "data";
         var data2 = "data";
@@ -32,6 +30,6 @@ function testcase() {
 
         obj.property = "overrideData";
 
-        return obj.hasOwnProperty("property") && data1 === "data" && data2 === "overrideData";
-    }
-runTestCase(testcase);
+assert(obj.hasOwnProperty("property"), 'obj.hasOwnProperty("property") !== true');
+assert.sameValue(data1, "data", 'data1');
+assert.sameValue(data2, "overrideData", 'data2');
diff --git a/test/built-ins/Object/defineProperty/15.2.3.6-3-24.js b/test/built-ins/Object/defineProperty/15.2.3.6-3-24.js
index a3221c86f8627493ad3eeb44a09f97f7cc70fc96..bccb1de1e24ccdbbbed9c6ef7718d58c2256b034 100644
--- a/test/built-ins/Object/defineProperty/15.2.3.6-3-24.js
+++ b/test/built-ins/Object/defineProperty/15.2.3.6-3-24.js
@@ -7,10 +7,8 @@ description: >
     Object.defineProperty - 'enumerable' property in 'Attributes' is
     own data property that overrides an inherited data property
     (8.10.5 step 3.a)
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
         var obj = {};
         var accessed = false;
 
@@ -35,6 +33,4 @@ function testcase() {
             }
         }
 
-        return accessed;
-    }
-runTestCase(testcase);
+assert(accessed, 'accessed !== true');
diff --git a/test/built-ins/Object/defineProperty/15.2.3.6-3-240.js b/test/built-ins/Object/defineProperty/15.2.3.6-3-240.js
index fdd1ac00f1a1ad26811e1f726c2d87d9df7c0eb9..3a148ce82ba23acb81cf18c8c3e09366a932cd2e 100644
--- a/test/built-ins/Object/defineProperty/15.2.3.6-3-240.js
+++ b/test/built-ins/Object/defineProperty/15.2.3.6-3-240.js
@@ -7,10 +7,8 @@ description: >
     Object.defineProperty - 'set' property in 'Attributes' is own data
     property that overrides an inherited accessor property (8.10.5
     step 8.a)
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
         var obj = {};
         var proto = {};
         var data1 = "data";
@@ -38,6 +36,6 @@ function testcase() {
 
         obj.property = "overrideData";
 
-        return obj.hasOwnProperty("property") && data1 === "data" && data2 === "overrideData";
-    }
-runTestCase(testcase);
+assert(obj.hasOwnProperty("property"), 'obj.hasOwnProperty("property") !== true');
+assert.sameValue(data1, "data", 'data1');
+assert.sameValue(data2, "overrideData", 'data2');
diff --git a/test/built-ins/Object/defineProperty/15.2.3.6-3-241.js b/test/built-ins/Object/defineProperty/15.2.3.6-3-241.js
index 8811a220b8ba2c37adfb623ca1dddb2e50ea3266..17bf99c8a781c951627f00d051135ed0611ff4de 100644
--- a/test/built-ins/Object/defineProperty/15.2.3.6-3-241.js
+++ b/test/built-ins/Object/defineProperty/15.2.3.6-3-241.js
@@ -6,10 +6,8 @@ es5id: 15.2.3.6-3-241
 description: >
     Object.defineProperty - 'set' property in 'Attributes' is own
     accessor property (8.10.5 step 8.a)
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
         var obj = {};
         var data = "data";
         var attributes = {};
@@ -24,6 +22,5 @@ function testcase() {
         Object.defineProperty(obj, "property", attributes);
         obj.property = "ownAccessorProperty";
 
-        return obj.hasOwnProperty("property") && data === "ownAccessorProperty";
-    }
-runTestCase(testcase);
+assert(obj.hasOwnProperty("property"), 'obj.hasOwnProperty("property") !== true');
+assert.sameValue(data, "ownAccessorProperty", 'data');
diff --git a/test/built-ins/Object/defineProperty/15.2.3.6-3-242.js b/test/built-ins/Object/defineProperty/15.2.3.6-3-242.js
index 6ea449a3750db3eae6ad1edebf2eedbd3e5a56ff..132baba02c8d8ef20018daa94904ae85256d574d 100644
--- a/test/built-ins/Object/defineProperty/15.2.3.6-3-242.js
+++ b/test/built-ins/Object/defineProperty/15.2.3.6-3-242.js
@@ -6,10 +6,8 @@ es5id: 15.2.3.6-3-242
 description: >
     Object.defineProperty - 'set' property in 'Attributes' is an
     inherited accessor property (8.10.5 step 8.a)
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
         var obj = {};
         var proto = {};
         var data = "data";
@@ -29,6 +27,5 @@ function testcase() {
         Object.defineProperty(obj, "property", child);
         obj.property = "inheritedAccessorProperty";
 
-        return obj.hasOwnProperty("property") && data === "inheritedAccessorProperty";
-    }
-runTestCase(testcase);
+assert(obj.hasOwnProperty("property"), 'obj.hasOwnProperty("property") !== true');
+assert.sameValue(data, "inheritedAccessorProperty", 'data');
diff --git a/test/built-ins/Object/defineProperty/15.2.3.6-3-243.js b/test/built-ins/Object/defineProperty/15.2.3.6-3-243.js
index 507afc20cd7119830188b9f2647481170d97f699..f343f73a47d42f9eac288487846138205beaa5f4 100644
--- a/test/built-ins/Object/defineProperty/15.2.3.6-3-243.js
+++ b/test/built-ins/Object/defineProperty/15.2.3.6-3-243.js
@@ -7,10 +7,8 @@ description: >
     Object.defineProperty - 'set' property in 'Attributes' is own
     accessor property that overrides an inherited data property
     (8.10.5 step 8.a)
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
         var obj = {};
         var data1 = "data";
         var data2 = "data";
@@ -36,6 +34,6 @@ function testcase() {
         Object.defineProperty(obj, "property", child);
         obj.property = "ownAccessorProperty";
 
-        return obj.hasOwnProperty("property") && data1 === "data" && data2 === "ownAccessorProperty";
-    }
-runTestCase(testcase);
+assert(obj.hasOwnProperty("property"), 'obj.hasOwnProperty("property") !== true');
+assert.sameValue(data1, "data", 'data1');
+assert.sameValue(data2, "ownAccessorProperty", 'data2');
diff --git a/test/built-ins/Object/defineProperty/15.2.3.6-3-244.js b/test/built-ins/Object/defineProperty/15.2.3.6-3-244.js
index 1072ac07c958c6e38f5fe999114da93c19a9bea0..1696066e484989c67dd1bea86eeb79246dadbea3 100644
--- a/test/built-ins/Object/defineProperty/15.2.3.6-3-244.js
+++ b/test/built-ins/Object/defineProperty/15.2.3.6-3-244.js
@@ -7,10 +7,8 @@ description: >
     Object.defineProperty - 'set' property in 'Attributes' is own
     accessor property that overrides an inherited accessor property
     (8.10.5 step 8.a)
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
         var obj = {};
         var proto = {};
         var data1 = "data";
@@ -38,6 +36,6 @@ function testcase() {
         Object.defineProperty(obj, "property", child);
         obj.property = "ownAccessorProperty";
 
-        return obj.hasOwnProperty("property") && data1 === "data" && data2 === "ownAccessorProperty";
-    }
-runTestCase(testcase);
+assert(obj.hasOwnProperty("property"), 'obj.hasOwnProperty("property") !== true');
+assert.sameValue(data1, "data", 'data1');
+assert.sameValue(data2, "ownAccessorProperty", 'data2');
diff --git a/test/built-ins/Object/defineProperty/15.2.3.6-3-248.js b/test/built-ins/Object/defineProperty/15.2.3.6-3-248.js
index 2bcb5703db48b77f3f7b6b7b3010fd9dc733491d..2f473b9860430e0ecdd241cf8d698e824b050b60 100644
--- a/test/built-ins/Object/defineProperty/15.2.3.6-3-248.js
+++ b/test/built-ins/Object/defineProperty/15.2.3.6-3-248.js
@@ -7,10 +7,8 @@ description: >
     Object.defineProperty - 'Attributes' is a Function object which
     implements its own [[Get]] method to access the 'set' property
     (8.10.5 step 8.a)
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
         var obj = {};
         var data = "data";
         var funObj = function () { };
@@ -22,6 +20,5 @@ function testcase() {
         Object.defineProperty(obj, "property", funObj);
         obj.property = "overrideData";
 
-        return obj.hasOwnProperty("property") && data === "overrideData";
-    }
-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.js b/test/built-ins/Object/defineProperty/15.2.3.6-3-249.js
index b05b8c0e426a31171e0e498db5d7857bb33241cb..dce84e78be8b884a9a4decef6c2859287ff31a56 100644
--- a/test/built-ins/Object/defineProperty/15.2.3.6-3-249.js
+++ b/test/built-ins/Object/defineProperty/15.2.3.6-3-249.js
@@ -7,10 +7,8 @@ description: >
     Object.defineProperty - 'Attributes' is an Array 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";
         var arrObj = [];
@@ -22,6 +20,5 @@ function testcase() {
         Object.defineProperty(obj, "property", arrObj);
         obj.property = "overrideData";
 
-        return obj.hasOwnProperty("property") && data === "overrideData";
-    }
-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-25.js b/test/built-ins/Object/defineProperty/15.2.3.6-3-25.js
index e5ed357aab37961aa288acc33b47368f34753878..2b278d63beab6d17163a8f9493daaf56bb445bdf 100644
--- a/test/built-ins/Object/defineProperty/15.2.3.6-3-25.js
+++ b/test/built-ins/Object/defineProperty/15.2.3.6-3-25.js
@@ -7,10 +7,8 @@ description: >
     Object.defineProperty - 'enumerable' property in 'Attributes' is
     own data property that overrides an inherited accessor property
     (8.10.5 step 3.a)
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
         var obj = {};
         var accessed = false;
 
@@ -37,6 +35,4 @@ function testcase() {
             }
         }
 
-        return accessed;
-    }
-runTestCase(testcase);
+assert(accessed, 'accessed !== true');
diff --git a/test/built-ins/Object/defineProperty/15.2.3.6-3-250.js b/test/built-ins/Object/defineProperty/15.2.3.6-3-250.js
index eb7197b0acbcf98242f1750641573f267d1f3766..bfededf6b27bfa057ab909ab43cc99813724624d 100644
--- a/test/built-ins/Object/defineProperty/15.2.3.6-3-250.js
+++ b/test/built-ins/Object/defineProperty/15.2.3.6-3-250.js
@@ -7,10 +7,8 @@ description: >
     Object.defineProperty - 'Attributes' is a String 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 strObj = new String();
         var data = "data";
@@ -22,6 +20,5 @@ function testcase() {
         Object.defineProperty(obj, "property", strObj);
         obj.property = "overrideData";
 
-        return obj.hasOwnProperty("property") && data === "overrideData";
-    }
-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.js b/test/built-ins/Object/defineProperty/15.2.3.6-3-251.js
index f36d1c305790e6e36f521a0cc5be21b85fb3758e..9bbccaff9506d33321fc0a84c9dd1b2839cfd9dc 100644
--- a/test/built-ins/Object/defineProperty/15.2.3.6-3-251.js
+++ b/test/built-ins/Object/defineProperty/15.2.3.6-3-251.js
@@ -7,10 +7,8 @@ description: >
     Object.defineProperty - 'Attributes' is a Boolean 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";
         var boolObj = new Boolean(true);
@@ -22,6 +20,5 @@ function testcase() {
         Object.defineProperty(obj, "property", boolObj);
         obj.property = "overrideData";
 
-        return obj.hasOwnProperty("property") && data === "overrideData";
-    }
-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.js b/test/built-ins/Object/defineProperty/15.2.3.6-3-252.js
index f30a42abbd2f05135469bea03f0110f895261ff6..549dcd00e5263d362fc12ba501f8a6561138f51e 100644
--- a/test/built-ins/Object/defineProperty/15.2.3.6-3-252.js
+++ b/test/built-ins/Object/defineProperty/15.2.3.6-3-252.js
@@ -7,10 +7,8 @@ description: >
     Object.defineProperty - 'Attributes' is a Number 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";
         var numObj = new Number(-2);
@@ -22,6 +20,5 @@ function testcase() {
         Object.defineProperty(obj, "property", numObj);
         obj.property = "overrideData";
 
-        return obj.hasOwnProperty("property") && data === "overrideData";
-    }
-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.js b/test/built-ins/Object/defineProperty/15.2.3.6-3-254.js
index 32c2e69beabe60dc28db267a2312e83f40f75771..215cd639d34fc7e748053e174a3f5ee970f695cf 100644
--- a/test/built-ins/Object/defineProperty/15.2.3.6-3-254.js
+++ b/test/built-ins/Object/defineProperty/15.2.3.6-3-254.js
@@ -7,10 +7,8 @@ description: >
     Object.defineProperty - 'Attributes' is a Date 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";
         var dateObj = new Date();
@@ -22,6 +20,5 @@ function testcase() {
         Object.defineProperty(obj, "property", dateObj);
         obj.property = "overrideData";
 
-        return obj.hasOwnProperty("property") && data === "overrideData";
-    }
-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.js b/test/built-ins/Object/defineProperty/15.2.3.6-3-255.js
index 521f12042112316d8c10618296df8bceb74a0003..058730c2f859aba2c4a29f94242a7aa445eb86f7 100644
--- a/test/built-ins/Object/defineProperty/15.2.3.6-3-255.js
+++ b/test/built-ins/Object/defineProperty/15.2.3.6-3-255.js
@@ -7,10 +7,8 @@ description: >
     Object.defineProperty - 'Attributes' is a RegExp 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";
         var regObj = new RegExp();
@@ -22,6 +20,5 @@ function testcase() {
         Object.defineProperty(obj, "property", regObj);
         obj.property = "overrideData";
 
-        return obj.hasOwnProperty("property") && data === "overrideData";
-    }
-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.js b/test/built-ins/Object/defineProperty/15.2.3.6-3-257.js
index 731d5dda8406ee10ef5036c0b2e5f26216a24cdb..944e77f984587bb6270de61e3852a4fef6a07882 100644
--- a/test/built-ins/Object/defineProperty/15.2.3.6-3-257.js
+++ b/test/built-ins/Object/defineProperty/15.2.3.6-3-257.js
@@ -7,10 +7,8 @@ description: >
     Object.defineProperty - 'Attributes' is an Error 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";
         var errObj = new Error();
@@ -22,6 +20,5 @@ function testcase() {
         Object.defineProperty(obj, "property", errObj);
         obj.property = "overrideData";
 
-        return obj.hasOwnProperty("property") && data === "overrideData";
-    }
-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.js b/test/built-ins/Object/defineProperty/15.2.3.6-3-258.js
index 5d21ad400f6e95b6f2516ef224f9e7d57e3006d5..3ec7fdcf09d4f5e9f12551c6a0a8fd4ac991c315 100644
--- a/test/built-ins/Object/defineProperty/15.2.3.6-3-258.js
+++ b/test/built-ins/Object/defineProperty/15.2.3.6-3-258.js
@@ -7,10 +7,8 @@ description: >
     Object.defineProperty - 'Attributes' is an Arguments object which
     implements its own [[Get]] method to access the 'set' property
     (8.10.5 step 8.a)
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
         var obj = {};
         var data = "data";
         var argObj = (function () { return arguments; })();
@@ -21,6 +19,5 @@ function testcase() {
         Object.defineProperty(obj, "property", argObj);
         obj.property = "overrideData";
 
-        return obj.hasOwnProperty("property") && data === "overrideData";
-    }
-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-26.js b/test/built-ins/Object/defineProperty/15.2.3.6-3-26.js
index e1e5334765c2fea5cde7a6f4168a5cfa2f098429..cddcf00fa4757606133eccf354ca0c5218fb53f4 100644
--- a/test/built-ins/Object/defineProperty/15.2.3.6-3-26.js
+++ b/test/built-ins/Object/defineProperty/15.2.3.6-3-26.js
@@ -6,10 +6,8 @@ es5id: 15.2.3.6-3-26
 description: >
     Object.defineProperty - 'enumerable' property in 'Attributes' is
     own accessor property (8.10.5 step 3.a)
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
         var obj = {};
         var accessed = false;
 
@@ -27,6 +25,5 @@ function testcase() {
                 accessed = true;
             }
         }
-        return accessed;
-    }
-runTestCase(testcase);
+
+assert(accessed, 'accessed !== true');
diff --git a/test/built-ins/Object/defineProperty/15.2.3.6-3-262.js b/test/built-ins/Object/defineProperty/15.2.3.6-3-262.js
index c37a166aa8303cad64f354a9497922677c2c21d0..0b8522c7ffda9597b9611bb2e56575dea8216bfe 100644
--- a/test/built-ins/Object/defineProperty/15.2.3.6-3-262.js
+++ b/test/built-ins/Object/defineProperty/15.2.3.6-3-262.js
@@ -6,10 +6,8 @@ es5id: 15.2.3.6-3-262
 description: >
     Object.defineProperty - value of 'set' property in 'Attributes' is
     a function (8.10.5 step 8.b)
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
         var obj = {};
         var data = "data";
 
@@ -20,6 +18,5 @@ function testcase() {
         });
         obj.property = "overrideData";
 
-        return obj.hasOwnProperty("property") && data === "overrideData";
-    }
-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-27.js b/test/built-ins/Object/defineProperty/15.2.3.6-3-27.js
index b8b99e547a4f4852e0fcbbffea0862675f6e9f5f..83cb145730e42bad8882f434736d4f0b20e063ed 100644
--- a/test/built-ins/Object/defineProperty/15.2.3.6-3-27.js
+++ b/test/built-ins/Object/defineProperty/15.2.3.6-3-27.js
@@ -6,10 +6,8 @@ es5id: 15.2.3.6-3-27
 description: >
     Object.defineProperty - 'enumerable' property in 'Attributes' is
     an inherited accessor property (8.10.5 step 3.a)
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
         var obj = {};
         var accessed = false;
 
@@ -32,6 +30,5 @@ function testcase() {
                 accessed = true;
             }
         }
-        return accessed;
-    }
-runTestCase(testcase);
+
+assert(accessed, 'accessed !== true');
diff --git a/test/built-ins/Object/defineProperty/15.2.3.6-3-28.js b/test/built-ins/Object/defineProperty/15.2.3.6-3-28.js
index 651055fbdd13895edfc9fa22789789b5a8f41aca..0de7fce4a023566f53a5d16a72371130fe0785d4 100644
--- a/test/built-ins/Object/defineProperty/15.2.3.6-3-28.js
+++ b/test/built-ins/Object/defineProperty/15.2.3.6-3-28.js
@@ -7,10 +7,8 @@ description: >
     Object.defineProperty - 'enumerable' property in 'Attributes' is
     own accessor property that overrides an inherited data property
     (8.10.5 step 3.a)
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
         var obj = {};
         var accessed = false;
 
@@ -34,6 +32,5 @@ function testcase() {
                 accessed = true;
             }
         }
-        return accessed;
-    }
-runTestCase(testcase);
+
+assert(accessed, 'accessed !== true');
diff --git a/test/built-ins/Object/defineProperty/15.2.3.6-3-29.js b/test/built-ins/Object/defineProperty/15.2.3.6-3-29.js
index 5c54d5dfc8ca4b5e19a9ee37745d70aa482d79c6..665c3218e4e99a64e00c693333b4f346b0d0ab59 100644
--- a/test/built-ins/Object/defineProperty/15.2.3.6-3-29.js
+++ b/test/built-ins/Object/defineProperty/15.2.3.6-3-29.js
@@ -7,10 +7,8 @@ description: >
     Object.defineProperty - 'enumerable' property in 'Attributes' is
     own accessor property that overrides an inherited accessor
     property (8.10.5 step 3.a)
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
         var obj = {};
         var accessed = false;
         var proto = {};
@@ -39,6 +37,5 @@ function testcase() {
                 accessed = true;
             }
         }
-        return accessed;
-    }
-runTestCase(testcase);
+
+assert(accessed, 'accessed !== true');
diff --git a/test/built-ins/Object/defineProperty/15.2.3.6-3-30.js b/test/built-ins/Object/defineProperty/15.2.3.6-3-30.js
index 0c0925fd9731aa2c2709bfc101a944a606551409..54be326f7f8d1d442c6ca331470b67b0769c338f 100644
--- a/test/built-ins/Object/defineProperty/15.2.3.6-3-30.js
+++ b/test/built-ins/Object/defineProperty/15.2.3.6-3-30.js
@@ -6,10 +6,8 @@ es5id: 15.2.3.6-3-30
 description: >
     Object.defineProperty - 'enumerable' property in 'Attributes' is
     own accessor property without a get function (8.10.5 step 3.a)
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
         var obj = {};
         var accessed = false;
 
@@ -25,6 +23,5 @@ function testcase() {
                 accessed = true;
             }
         }
-        return !accessed;
-    }
-runTestCase(testcase);
+
+assert.sameValue(accessed, false, 'accessed');
diff --git a/test/built-ins/Object/defineProperty/15.2.3.6-3-31.js b/test/built-ins/Object/defineProperty/15.2.3.6-3-31.js
index 6c1d1e2d4eba0d0dd03c2c6e7dd192f5efa58718..476cf5038c288ada08781eac3d07a17a4956f196 100644
--- a/test/built-ins/Object/defineProperty/15.2.3.6-3-31.js
+++ b/test/built-ins/Object/defineProperty/15.2.3.6-3-31.js
@@ -7,10 +7,8 @@ description: >
     Object.defineProperty - 'enumerable' property in 'Attributes' is
     own accessor property(without a get function) that overrides an
     inherited accessor property (8.10.5 step 3.a)
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
         var obj = {};
         var accessed = false;
         var proto = {};
@@ -37,6 +35,5 @@ function testcase() {
                 accessed = true;
             }
         }
-        return !accessed;
-    }
-runTestCase(testcase);
+
+assert.sameValue(accessed, false, 'accessed');
diff --git a/test/built-ins/Object/defineProperty/15.2.3.6-3-32.js b/test/built-ins/Object/defineProperty/15.2.3.6-3-32.js
index 4f7ac85ca60af58ebc2cdfaf9b07a3a3d2bc0295..b1981975f4e98d3faef1214275314b84542eeb2e 100644
--- a/test/built-ins/Object/defineProperty/15.2.3.6-3-32.js
+++ b/test/built-ins/Object/defineProperty/15.2.3.6-3-32.js
@@ -7,10 +7,8 @@ description: >
     Object.defineProperty - 'enumerable' property in 'Attributes' is
     an inherited accessor property without a get function (8.10.5 step
     3.a)
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
         var obj = {};
         var accessed = false;
         var proto = {};
@@ -31,6 +29,5 @@ function testcase() {
                 accessed = true;
             }
         }
-        return !accessed;
-    }
-runTestCase(testcase);
+
+assert.sameValue(accessed, false, 'accessed');
diff --git a/test/built-ins/Object/defineProperty/15.2.3.6-3-33.js b/test/built-ins/Object/defineProperty/15.2.3.6-3-33.js
index 3aead0fa95cb25e5e85b0e6fb80b18f832601265..98980b1d5e1900ef1a7adac94a9c4a38258ac11b 100644
--- a/test/built-ins/Object/defineProperty/15.2.3.6-3-33.js
+++ b/test/built-ins/Object/defineProperty/15.2.3.6-3-33.js
@@ -7,10 +7,8 @@ description: >
     Object.defineProperty - 'Attributes' is a Function object which
     implements its own [[Get]] method to access the 'enumerable'
     property (8.10.5 step 3.a)
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
         var obj = {};
         var accessed = false;
 
@@ -25,6 +23,4 @@ function testcase() {
             }
         }
 
-        return accessed;
-    }
-runTestCase(testcase);
+assert(accessed, 'accessed !== true');
diff --git a/test/built-ins/Object/defineProperty/15.2.3.6-3-34.js b/test/built-ins/Object/defineProperty/15.2.3.6-3-34.js
index 94014a32d274445712a0183e78c72f9efa47e325..83aba5145b0f39b1c4d770c23b50713590823f2a 100644
--- a/test/built-ins/Object/defineProperty/15.2.3.6-3-34.js
+++ b/test/built-ins/Object/defineProperty/15.2.3.6-3-34.js
@@ -7,10 +7,8 @@ description: >
     Object.defineProperty - 'Attributes' is an Array 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;
 
@@ -25,6 +23,4 @@ function testcase() {
             }
         }
 
-        return accessed;
-    }
-runTestCase(testcase);
+assert(accessed, 'accessed !== true');
diff --git a/test/built-ins/Object/defineProperty/15.2.3.6-3-35.js b/test/built-ins/Object/defineProperty/15.2.3.6-3-35.js
index c465992ebfe117f347270a5b6b86189500d742e5..00b780f0a133d0cce7cad3b6aa4867aad4db60be 100644
--- a/test/built-ins/Object/defineProperty/15.2.3.6-3-35.js
+++ b/test/built-ins/Object/defineProperty/15.2.3.6-3-35.js
@@ -7,10 +7,8 @@ description: >
     Object.defineProperty - 'Attributes' is a String 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;
 
@@ -25,6 +23,4 @@ function testcase() {
             }
         }
 
-        return accessed;
-    }
-runTestCase(testcase);
+assert(accessed, 'accessed !== true');
diff --git a/test/built-ins/Object/defineProperty/15.2.3.6-3-36.js b/test/built-ins/Object/defineProperty/15.2.3.6-3-36.js
index 974b4997fa907d83e021578cf96bc69c47642c57..2ca7f9ab984a5b7a14577d291b44d791a09b5152 100644
--- a/test/built-ins/Object/defineProperty/15.2.3.6-3-36.js
+++ b/test/built-ins/Object/defineProperty/15.2.3.6-3-36.js
@@ -7,10 +7,8 @@ description: >
     Object.defineProperty - 'Attributes' is a Boolean 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;
 
@@ -25,6 +23,4 @@ function testcase() {
             }
         }
 
-        return accessed;
-    }
-runTestCase(testcase);
+assert(accessed, 'accessed !== true');
diff --git a/test/built-ins/Object/defineProperty/15.2.3.6-3-37.js b/test/built-ins/Object/defineProperty/15.2.3.6-3-37.js
index f30fcb24136a27cd4576183d59ac0a193dae5198..291f1b0e3f9b8729bc7eddf14d450970bf291dce 100644
--- a/test/built-ins/Object/defineProperty/15.2.3.6-3-37.js
+++ b/test/built-ins/Object/defineProperty/15.2.3.6-3-37.js
@@ -7,10 +7,8 @@ description: >
     Object.defineProperty - 'Attributes' is a Number 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;
 
@@ -25,6 +23,4 @@ function testcase() {
             }
         }
 
-        return accessed;
-    }
-runTestCase(testcase);
+assert(accessed, 'accessed !== true');
diff --git a/test/built-ins/Object/defineProperty/15.2.3.6-3-39.js b/test/built-ins/Object/defineProperty/15.2.3.6-3-39.js
index cd25ba56dffecaa4c70ebd1cee7bf8269f8122aa..476162159b7a4b9b4fcab39ffc0b9c9adaf27344 100644
--- a/test/built-ins/Object/defineProperty/15.2.3.6-3-39.js
+++ b/test/built-ins/Object/defineProperty/15.2.3.6-3-39.js
@@ -7,10 +7,8 @@ description: >
     Object.defineProperty - 'Attributes' is a Date 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;
 
@@ -24,6 +22,5 @@ function testcase() {
                 accessed = true;
             }
         }
-        return accessed;
-    }
-runTestCase(testcase);
+
+assert(accessed, 'accessed !== true');
diff --git a/test/built-ins/Object/defineProperty/15.2.3.6-3-40.js b/test/built-ins/Object/defineProperty/15.2.3.6-3-40.js
index b3e4a16d46bb3144e494be8740c21deec40731c6..46975d82c7bc568104477c187ba8752c06e2dbd6 100644
--- a/test/built-ins/Object/defineProperty/15.2.3.6-3-40.js
+++ b/test/built-ins/Object/defineProperty/15.2.3.6-3-40.js
@@ -7,10 +7,8 @@ description: >
     Object.defineProperty - 'Attributes' is an RegExp 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;
 
@@ -25,6 +23,4 @@ function testcase() {
             }
         }
 
-        return accessed;
-    }
-runTestCase(testcase);
+assert(accessed, 'accessed !== true');
diff --git a/test/built-ins/Object/defineProperty/15.2.3.6-3-42.js b/test/built-ins/Object/defineProperty/15.2.3.6-3-42.js
index 495cbb94fac05eaecc4a3ce3e60313ca083830af..909994b82411604a848e5dac3f89c12f7f81ed63 100644
--- a/test/built-ins/Object/defineProperty/15.2.3.6-3-42.js
+++ b/test/built-ins/Object/defineProperty/15.2.3.6-3-42.js
@@ -7,10 +7,8 @@ description: >
     Object.defineProperty - 'Attributes' is an Error 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;
 
@@ -25,6 +23,4 @@ function testcase() {
             }
         }
 
-        return accessed;
-    }
-runTestCase(testcase);
+assert(accessed, 'accessed !== true');
diff --git a/test/built-ins/Object/defineProperty/15.2.3.6-3-43.js b/test/built-ins/Object/defineProperty/15.2.3.6-3-43.js
index 2481988a408a0c78980eaf92480b13acff592e35..8c2be1cae563d5610965f0927b7d133ae4a411bf 100644
--- a/test/built-ins/Object/defineProperty/15.2.3.6-3-43.js
+++ b/test/built-ins/Object/defineProperty/15.2.3.6-3-43.js
@@ -7,10 +7,8 @@ description: >
     Object.defineProperty - 'Attributes' is an Arguments object which
     implements its own [[Get]] method to access the 'enumerable'
     property (8.10.5 step 3.a)
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
         var obj = {};
         var accessed = false;
 
@@ -25,6 +23,4 @@ function testcase() {
             }
         }
 
-        return accessed;
-    }
-runTestCase(testcase);
+assert(accessed, 'accessed !== true');
diff --git a/test/built-ins/Object/defineProperty/15.2.3.6-3-46.js b/test/built-ins/Object/defineProperty/15.2.3.6-3-46.js
index dadd58c569250b1d69ed133065f0d78d4fa9c5a3..9e6003e7c15e1b1c2453b767057f3c026777a635 100644
--- a/test/built-ins/Object/defineProperty/15.2.3.6-3-46.js
+++ b/test/built-ins/Object/defineProperty/15.2.3.6-3-46.js
@@ -6,10 +6,8 @@ es5id: 15.2.3.6-3-46
 description: >
     Object.defineProperty - value of 'enumerable' property in
     'Attributes' is undefined (8.10.5 step 3.b)
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
         var obj = {};
         var accessed = false;
 
@@ -22,6 +20,5 @@ function testcase() {
                 accessed = true;
             }
         }
-        return !accessed;
-    }
-runTestCase(testcase);
+
+assert.sameValue(accessed, false, 'accessed');
diff --git a/test/built-ins/Object/defineProperty/15.2.3.6-3-47.js b/test/built-ins/Object/defineProperty/15.2.3.6-3-47.js
index 97daddb856bb34583d3717ee9782cd5f52c6d9fb..2ed3c5efddd70d230d398c6dc5fc0ca66827399f 100644
--- a/test/built-ins/Object/defineProperty/15.2.3.6-3-47.js
+++ b/test/built-ins/Object/defineProperty/15.2.3.6-3-47.js
@@ -6,10 +6,8 @@ es5id: 15.2.3.6-3-47
 description: >
     Object.defineProperty - value of 'enumerable' property in
     'Attributes' is null (8.10.5 step 3.b)
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
         var obj = {};
         var accessed = false;
 
@@ -20,6 +18,5 @@ function testcase() {
                 accessed = true;
             }
         }
-        return !accessed;
-    }
-runTestCase(testcase);
+
+assert.sameValue(accessed, false, 'accessed');
diff --git a/test/built-ins/Object/defineProperty/15.2.3.6-3-48.js b/test/built-ins/Object/defineProperty/15.2.3.6-3-48.js
index 0191658ae7f8551c933221930486240332a5e60a..d1e420ea8fe4d99cc3777af9dd5ed510fc8c2be1 100644
--- a/test/built-ins/Object/defineProperty/15.2.3.6-3-48.js
+++ b/test/built-ins/Object/defineProperty/15.2.3.6-3-48.js
@@ -6,10 +6,8 @@ es5id: 15.2.3.6-3-48
 description: >
     Object.defineProperty - value of 'enumerable' property in
     'Attributes' is true (8.10.5 step 3.b)
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
         var obj = {};
         var accessed = false;
 
@@ -20,6 +18,5 @@ function testcase() {
                 accessed = true;
             }
         }
-        return accessed;
-    }
-runTestCase(testcase);
+
+assert(accessed, 'accessed !== true');
diff --git a/test/built-ins/Object/defineProperty/15.2.3.6-3-49.js b/test/built-ins/Object/defineProperty/15.2.3.6-3-49.js
index 9bf3ba1cdda10d2658fb51b40c152c72f0f3735e..bed11ffd6dd9f43d36cff431ad890e436a05dd93 100644
--- a/test/built-ins/Object/defineProperty/15.2.3.6-3-49.js
+++ b/test/built-ins/Object/defineProperty/15.2.3.6-3-49.js
@@ -6,10 +6,8 @@ es5id: 15.2.3.6-3-49
 description: >
     Object.defineProperty - value of 'enumerable' property in
     'Attributes' is false (8.10.5 step 3.b)
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
         var obj = {};
         var accessed = false;
 
@@ -20,6 +18,5 @@ function testcase() {
                 accessed = true;
             }
         }
-        return !accessed;
-    }
-runTestCase(testcase);
+
+assert.sameValue(accessed, false, 'accessed');
diff --git a/test/built-ins/Object/defineProperty/15.2.3.6-3-50.js b/test/built-ins/Object/defineProperty/15.2.3.6-3-50.js
index 0664c777dde44e9d4d316825b325113ddc9b1ba4..91a8d090623ab5ed209619f884ace79d410ed9be 100644
--- a/test/built-ins/Object/defineProperty/15.2.3.6-3-50.js
+++ b/test/built-ins/Object/defineProperty/15.2.3.6-3-50.js
@@ -6,10 +6,8 @@ es5id: 15.2.3.6-3-50
 description: >
     Object.defineProperty - value of 'enumerable' property in
     'Attributes' is 0 (8.10.5 step 3.b)
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
         var obj = {};
         var accessed = false;
 
@@ -20,6 +18,5 @@ function testcase() {
                 accessed = true;
             }
         }
-        return !accessed;
-    }
-runTestCase(testcase);
+
+assert.sameValue(accessed, false, 'accessed');
diff --git a/test/built-ins/Object/defineProperty/15.2.3.6-3-51.js b/test/built-ins/Object/defineProperty/15.2.3.6-3-51.js
index f255817dca4c24a8d5984fafb80f6d401663960c..ddea2dfa77e14f8c32428abf5c59637b9dd6041d 100644
--- a/test/built-ins/Object/defineProperty/15.2.3.6-3-51.js
+++ b/test/built-ins/Object/defineProperty/15.2.3.6-3-51.js
@@ -6,10 +6,8 @@ es5id: 15.2.3.6-3-51
 description: >
     Object.defineProperty - value of 'enumerable' property in
     'Attributes' is +0 (8.10.5 step 3.b)
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
         var obj = {};
         var accessed = false;
 
@@ -20,6 +18,5 @@ function testcase() {
                 accessed = true;
             }
         }
-        return !accessed;
-    }
-runTestCase(testcase);
+
+assert.sameValue(accessed, false, 'accessed');
diff --git a/test/built-ins/Object/defineProperty/15.2.3.6-3-52.js b/test/built-ins/Object/defineProperty/15.2.3.6-3-52.js
index 111a8524bfd92b64d484d6b672d6ed4db449ba19..2fb433b80a61b436a0ab548cb54c246efb3b70a7 100644
--- a/test/built-ins/Object/defineProperty/15.2.3.6-3-52.js
+++ b/test/built-ins/Object/defineProperty/15.2.3.6-3-52.js
@@ -6,10 +6,8 @@ es5id: 15.2.3.6-3-52
 description: >
     Object.defineProperty - value of 'enumerable' property in
     'Attributes' is -0 (8.10.5 step 3.b)
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
         var obj = {};
         var accessed = false;
 
@@ -20,6 +18,5 @@ function testcase() {
                 accessed = true;
             }
         }
-        return !accessed;
-    }
-runTestCase(testcase);
+
+assert.sameValue(accessed, false, 'accessed');
diff --git a/test/built-ins/Object/defineProperty/15.2.3.6-3-53.js b/test/built-ins/Object/defineProperty/15.2.3.6-3-53.js
index 618eb75bbac191698179cbc42b1c90050de8d5a1..aaa5fef8e1c5174f8a37eb9f58919133f59654a4 100644
--- a/test/built-ins/Object/defineProperty/15.2.3.6-3-53.js
+++ b/test/built-ins/Object/defineProperty/15.2.3.6-3-53.js
@@ -6,10 +6,8 @@ es5id: 15.2.3.6-3-53
 description: >
     Object.defineProperty - value of 'enumerable' property in
     'Attributes' is NaN (8.10.5 step 3.b)
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
         var obj = {};
         var accessed = false;
 
@@ -20,6 +18,5 @@ function testcase() {
                 accessed = true;
             }
         }
-        return !accessed;
-    }
-runTestCase(testcase);
+
+assert.sameValue(accessed, false, 'accessed');
diff --git a/test/built-ins/Object/defineProperty/15.2.3.6-3-54.js b/test/built-ins/Object/defineProperty/15.2.3.6-3-54.js
index 8f2fa8511d68d24ce28ebf21026ddf53b035bf39..479ed01b7749ab4c727013ac6585b4e2f003577e 100644
--- a/test/built-ins/Object/defineProperty/15.2.3.6-3-54.js
+++ b/test/built-ins/Object/defineProperty/15.2.3.6-3-54.js
@@ -6,10 +6,8 @@ es5id: 15.2.3.6-3-54
 description: >
     Object.defineProperty - value of 'enumerable' property in
     'Attributes' is a positive number (8.10.5 step 3.b)
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
         var obj = {};
         var accessed = false;
 
@@ -20,6 +18,5 @@ function testcase() {
                 accessed = true;
             }
         }
-        return accessed;
-    }
-runTestCase(testcase);
+
+assert(accessed, 'accessed !== true');
diff --git a/test/built-ins/Object/defineProperty/15.2.3.6-3-55.js b/test/built-ins/Object/defineProperty/15.2.3.6-3-55.js
index 51bd1b07da5ca92c12d4c9b703e9b1ab1195bbf1..bba81e43e1e8b1a3c6e70f34d59dcf6c600dfb92 100644
--- a/test/built-ins/Object/defineProperty/15.2.3.6-3-55.js
+++ b/test/built-ins/Object/defineProperty/15.2.3.6-3-55.js
@@ -6,10 +6,8 @@ es5id: 15.2.3.6-3-55
 description: >
     Object.defineProperty - value of 'enumerable' property in
     'Attributes' is a negative number (8.10.5 step 3.b)
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
         var obj = {};
         var accessed = false;
 
@@ -20,6 +18,5 @@ function testcase() {
                 accessed = true;
             }
         }
-        return accessed;
-    }
-runTestCase(testcase);
+
+assert(accessed, 'accessed !== true');
diff --git a/test/built-ins/Object/defineProperty/15.2.3.6-3-56.js b/test/built-ins/Object/defineProperty/15.2.3.6-3-56.js
index 246958d8eef3cf8044a6692222e7dcc7e68754fa..ff875f28a203310855c1b9c35527d2f170299c0b 100644
--- a/test/built-ins/Object/defineProperty/15.2.3.6-3-56.js
+++ b/test/built-ins/Object/defineProperty/15.2.3.6-3-56.js
@@ -6,10 +6,8 @@ es5id: 15.2.3.6-3-56
 description: >
     Object.defineProperty - value of 'enumerable' property in
     'Attributes' is an empty string (8.10.5 step 3.b)
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
         var obj = {};
         var accessed = false;
 
@@ -20,6 +18,5 @@ function testcase() {
                 accessed = true;
             }
         }
-        return !accessed;
-    }
-runTestCase(testcase);
+
+assert.sameValue(accessed, false, 'accessed');
diff --git a/test/built-ins/Object/defineProperty/15.2.3.6-3-57.js b/test/built-ins/Object/defineProperty/15.2.3.6-3-57.js
index 941d043d3c985278c281176a69e70ad01d0ea35a..ec0bb7376d10dd8c4cd17964862a43b0d8f923af 100644
--- a/test/built-ins/Object/defineProperty/15.2.3.6-3-57.js
+++ b/test/built-ins/Object/defineProperty/15.2.3.6-3-57.js
@@ -6,10 +6,8 @@ es5id: 15.2.3.6-3-57
 description: >
     Object.defineProperty - value of 'enumerable' property in
     'Attributes' is a non-empty string (8.10.5 step 3.b)
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
         var obj = {};
         var accessed = false;
 
@@ -20,6 +18,5 @@ function testcase() {
                 accessed = true;
             }
         }
-        return accessed;
-    }
-runTestCase(testcase);
+
+assert(accessed, 'accessed !== true');
diff --git a/test/built-ins/Object/defineProperty/15.2.3.6-3-58.js b/test/built-ins/Object/defineProperty/15.2.3.6-3-58.js
index 4b981b5b2812056ea1e5391bd04a36200f83fe18..be5dd1d8da1cbb3505c8703a5b9ca35aec08f251 100644
--- a/test/built-ins/Object/defineProperty/15.2.3.6-3-58.js
+++ b/test/built-ins/Object/defineProperty/15.2.3.6-3-58.js
@@ -6,10 +6,8 @@ es5id: 15.2.3.6-3-58
 description: >
     Object.defineProperty - value of 'enumerable' property in
     'Attributes' is a Function object (8.10.5 step 3.b)
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
         var obj = {};
         var accessed = false;
 
@@ -22,6 +20,5 @@ function testcase() {
                 accessed = true;
             }
         }
-        return accessed;
-    }
-runTestCase(testcase);
+
+assert(accessed, 'accessed !== true');
diff --git a/test/built-ins/Object/defineProperty/15.2.3.6-3-59.js b/test/built-ins/Object/defineProperty/15.2.3.6-3-59.js
index 3fbe67f5177d83a243dfd50645e55477ee97cb05..404f491efb4b8fabce3f982c0b0f04f67f5a6c7f 100644
--- a/test/built-ins/Object/defineProperty/15.2.3.6-3-59.js
+++ b/test/built-ins/Object/defineProperty/15.2.3.6-3-59.js
@@ -6,10 +6,8 @@ es5id: 15.2.3.6-3-59
 description: >
     Object.defineProperty - value of 'enumerable' property in
     'Attributes' is an Array object (8.10.5 step 3.b)
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
         var obj = {};
         var accessed = false;
 
@@ -20,6 +18,5 @@ function testcase() {
                 accessed = true;
             }
         }
-        return accessed;
-    }
-runTestCase(testcase);
+
+assert(accessed, 'accessed !== true');
diff --git a/test/built-ins/Object/defineProperty/15.2.3.6-3-60.js b/test/built-ins/Object/defineProperty/15.2.3.6-3-60.js
index e3034bca40104c6f947574a1caafc83137be9665..b8a43aeb74903a88185e97840e925d6dbaa1bcd5 100644
--- a/test/built-ins/Object/defineProperty/15.2.3.6-3-60.js
+++ b/test/built-ins/Object/defineProperty/15.2.3.6-3-60.js
@@ -6,10 +6,8 @@ es5id: 15.2.3.6-3-60
 description: >
     Object.defineProperty - value of 'enumerable' property in
     'Attributes' is a String Object (8.10.5 step 3.b)
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
         var obj = {};
         var accessed = false;
 
@@ -20,6 +18,5 @@ function testcase() {
                 accessed = true;
             }
         }
-        return accessed;
-    }
-runTestCase(testcase);
+
+assert(accessed, 'accessed !== true');
diff --git a/test/built-ins/Object/defineProperty/15.2.3.6-3-61.js b/test/built-ins/Object/defineProperty/15.2.3.6-3-61.js
index ceae035c1b8d7aa00cff657518399e60c016fc71..1e963978c968f971e3430ab85dd89d3757422497 100644
--- a/test/built-ins/Object/defineProperty/15.2.3.6-3-61.js
+++ b/test/built-ins/Object/defineProperty/15.2.3.6-3-61.js
@@ -6,10 +6,8 @@ es5id: 15.2.3.6-3-61
 description: >
     Object.defineProperty - value of 'enumerable' property in
     'Attributes' is a Boolean Object (8.10.5 step 3.b)
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
         var obj = {};
         var accessed = false;
 
@@ -20,6 +18,5 @@ function testcase() {
                 accessed = true;
             }
         }
-        return accessed;
-    }
-runTestCase(testcase);
+
+assert(accessed, 'accessed !== true');
diff --git a/test/built-ins/Object/defineProperty/15.2.3.6-3-62.js b/test/built-ins/Object/defineProperty/15.2.3.6-3-62.js
index ee29f6ca9a2d0aff373abe6e4bbd9434db19892d..60be30065c12ed9ab2aefc1a149c4cea1698a844 100644
--- a/test/built-ins/Object/defineProperty/15.2.3.6-3-62.js
+++ b/test/built-ins/Object/defineProperty/15.2.3.6-3-62.js
@@ -6,10 +6,8 @@ es5id: 15.2.3.6-3-62
 description: >
     Object.defineProperty - value of 'enumerable' property in
     'Attributes' is a Number Object (8.10.5 step 3.b)
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
         var obj = {};
         var accessed = false;
 
@@ -20,6 +18,5 @@ function testcase() {
                 accessed = true;
             }
         }
-        return accessed;
-    }
-runTestCase(testcase);
+
+assert(accessed, 'accessed !== true');
diff --git a/test/built-ins/Object/defineProperty/15.2.3.6-3-63.js b/test/built-ins/Object/defineProperty/15.2.3.6-3-63.js
index 45d8c53cc01f4dd3447498bf7d49e896fb8b34a3..a18690aac44d53da4dc70f248c4175ccb06069b1 100644
--- a/test/built-ins/Object/defineProperty/15.2.3.6-3-63.js
+++ b/test/built-ins/Object/defineProperty/15.2.3.6-3-63.js
@@ -6,10 +6,8 @@ es5id: 15.2.3.6-3-63
 description: >
     Object.defineProperty - value of 'enumerable' property in
     'Attributes' is the Math Object (8.10.5 step 3.b)
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
         var obj = {};
         var accessed = false;
 
@@ -20,6 +18,5 @@ function testcase() {
                 accessed = true;
             }
         }
-        return accessed;
-    }
-runTestCase(testcase);
+
+assert(accessed, 'accessed !== true');
diff --git a/test/built-ins/Object/defineProperty/15.2.3.6-3-64.js b/test/built-ins/Object/defineProperty/15.2.3.6-3-64.js
index b82227c840e9db32ce03e41df02ad42d194c00af..8ede8c20ed602fa047aa12da59539d20653cd0f5 100644
--- a/test/built-ins/Object/defineProperty/15.2.3.6-3-64.js
+++ b/test/built-ins/Object/defineProperty/15.2.3.6-3-64.js
@@ -6,10 +6,8 @@ es5id: 15.2.3.6-3-64
 description: >
     Object.defineProperty - value of 'enumerable' property in
     'Attributes' is a Date Object (8.10.5 step 3.b)
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
         var obj = {};
         var accessed = false;
 
@@ -20,6 +18,5 @@ function testcase() {
                 accessed = true;
             }
         }
-        return accessed;
-    }
-runTestCase(testcase);
+
+assert(accessed, 'accessed !== true');
diff --git a/test/built-ins/Object/defineProperty/15.2.3.6-3-65.js b/test/built-ins/Object/defineProperty/15.2.3.6-3-65.js
index 3318fc2c6a50e49ce67b16b59b80e0146000e883..57380cd6351c6df0fdbacf534a2e105320b586d1 100644
--- a/test/built-ins/Object/defineProperty/15.2.3.6-3-65.js
+++ b/test/built-ins/Object/defineProperty/15.2.3.6-3-65.js
@@ -6,10 +6,8 @@ es5id: 15.2.3.6-3-65
 description: >
     Object.defineProperty - value of 'enumerable' property in
     'Attributes' is a RegExp Object (8.10.5 step 3.b)
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
         var obj = {};
         var accessed = false;
 
@@ -20,6 +18,5 @@ function testcase() {
                 accessed = true;
             }
         }
-        return accessed;
-    }
-runTestCase(testcase);
+
+assert(accessed, 'accessed !== true');
diff --git a/test/built-ins/Object/defineProperty/15.2.3.6-3-66.js b/test/built-ins/Object/defineProperty/15.2.3.6-3-66.js
index aa47477ab4b6b7ce003f3ee0d8a8627a1a165a04..ec25504356e5627de7538116fe4bce7b44dac2e0 100644
--- a/test/built-ins/Object/defineProperty/15.2.3.6-3-66.js
+++ b/test/built-ins/Object/defineProperty/15.2.3.6-3-66.js
@@ -6,10 +6,8 @@ es5id: 15.2.3.6-3-66
 description: >
     Object.defineProperty - value of 'enumerable' property in
     'Attributes' is the JSON Object (8.10.5 step 3.b)
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
         var obj = {};
         var accessed = false;
 
@@ -20,6 +18,5 @@ function testcase() {
                 accessed = true;
             }
         }
-        return accessed;
-    }
-runTestCase(testcase);
+
+assert(accessed, 'accessed !== true');
diff --git a/test/built-ins/Object/defineProperty/15.2.3.6-3-67.js b/test/built-ins/Object/defineProperty/15.2.3.6-3-67.js
index bd30d6be2fb98c4731a303b221b34d6898b34381..fe4c45f0ea25ad0fa23834a1e5224c31892084d3 100644
--- a/test/built-ins/Object/defineProperty/15.2.3.6-3-67.js
+++ b/test/built-ins/Object/defineProperty/15.2.3.6-3-67.js
@@ -6,10 +6,8 @@ es5id: 15.2.3.6-3-67
 description: >
     Object.defineProperty - value of 'enumerable' property in
     'Attributes' is an Error Object (8.10.5 step 3.b)
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
         var obj = {};
         var accessed = false;
 
@@ -20,6 +18,5 @@ function testcase() {
                 accessed = true;
             }
         }
-        return accessed;
-    }
-runTestCase(testcase);
+
+assert(accessed, 'accessed !== true');
diff --git a/test/built-ins/Object/defineProperty/15.2.3.6-3-68.js b/test/built-ins/Object/defineProperty/15.2.3.6-3-68.js
index 4e5670710be5f7993edfefe526252eb63ad5e2ba..842b98eb26d401e8986236ac2922b6ba52a93443 100644
--- a/test/built-ins/Object/defineProperty/15.2.3.6-3-68.js
+++ b/test/built-ins/Object/defineProperty/15.2.3.6-3-68.js
@@ -6,10 +6,8 @@ es5id: 15.2.3.6-3-68
 description: >
     Object.defineProperty - value of 'enumerable' property in
     'Attributes' is an Arguments Object (8.10.5 step 3.b)
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
         var obj = {};
         var accessed = false;
         var argObj = (function () { return arguments; })(0, 1, 2);
@@ -21,6 +19,5 @@ function testcase() {
                 accessed = true;
             }
         }
-        return accessed;
-    }
-runTestCase(testcase);
+
+assert(accessed, 'accessed !== true');
diff --git a/test/built-ins/Object/defineProperty/15.2.3.6-3-70.js b/test/built-ins/Object/defineProperty/15.2.3.6-3-70.js
index e42112860d4f66d2cbc2058935b6926a0bdc31dd..ba161b0f63c290b828853a2030db5f92d094cc3d 100644
--- a/test/built-ins/Object/defineProperty/15.2.3.6-3-70.js
+++ b/test/built-ins/Object/defineProperty/15.2.3.6-3-70.js
@@ -6,12 +6,9 @@ es5id: 15.2.3.6-3-70
 description: >
     Object.defineProperty - value of 'enumerable' property in
     'Attributes' is the global object (8.10.5 step 3.b)
-includes:
-    - runTestCase.js
-    - fnGlobalObject.js
+includes: [fnGlobalObject.js]
 ---*/
 
-function testcase() {
         var obj = {};
         var accessed = false;
 
@@ -22,6 +19,5 @@ function testcase() {
                 accessed = true;
             }
         }
-        return accessed;
-    }
-runTestCase(testcase);
+
+assert(accessed, 'accessed !== true');
diff --git a/test/built-ins/Object/defineProperty/15.2.3.6-3-71.js b/test/built-ins/Object/defineProperty/15.2.3.6-3-71.js
index 475e786bb5aeaacb958b32d12337b45fa384022e..d732a952303dd2e8b0f6021169af0e92eb223f7b 100644
--- a/test/built-ins/Object/defineProperty/15.2.3.6-3-71.js
+++ b/test/built-ins/Object/defineProperty/15.2.3.6-3-71.js
@@ -7,10 +7,8 @@ description: >
     Object.defineProperty - value of 'enumerable' property in
     'Attributes' is treated as true when it is a string (value is
     'false') (8.10.5 step 3.b)
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
         var obj = {};
         var accessed = false;
 
@@ -21,6 +19,5 @@ function testcase() {
                 accessed = true;
             }
         }
-        return accessed;
-    }
-runTestCase(testcase);
+
+assert(accessed, 'accessed !== true');
diff --git a/test/built-ins/Object/defineProperty/15.2.3.6-3-72.js b/test/built-ins/Object/defineProperty/15.2.3.6-3-72.js
index 854ab849f4d5b5885ce6189363a762f5f498aaf5..64bd3d7e2b33d1f80c7b54904779fd716fab47c5 100644
--- a/test/built-ins/Object/defineProperty/15.2.3.6-3-72.js
+++ b/test/built-ins/Object/defineProperty/15.2.3.6-3-72.js
@@ -7,10 +7,8 @@ description: >
     Object.defineProperty - value of 'enumerable' property in
     'Attributes' is new Boolean(false) which is treated as true value
     (8.10.5 step 3.b)
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
         var obj = {};
         var accessed = false;
 
@@ -21,6 +19,5 @@ function testcase() {
                 accessed = true;
             }
         }
-        return accessed;
-    }
-runTestCase(testcase);
+
+assert(accessed, 'accessed !== true');
diff --git a/test/built-ins/Object/defineProperty/15.2.3.6-3-75.js b/test/built-ins/Object/defineProperty/15.2.3.6-3-75.js
index 5dbc2670600b0052d3313ed1885cf957d63817dd..57de46485f38ef697fd6691d994c3713ec89e729 100644
--- a/test/built-ins/Object/defineProperty/15.2.3.6-3-75.js
+++ b/test/built-ins/Object/defineProperty/15.2.3.6-3-75.js
@@ -6,10 +6,8 @@ es5id: 15.2.3.6-3-75
 description: >
     Object.defineProperty - 'configurable' property in 'Attributes' is
     own data property (8.10.5 step 4.a)
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
         var obj = { };
 
         Object.defineProperty(obj, "property", {
@@ -22,6 +20,5 @@ function testcase() {
 
         var afterDeleted = obj.hasOwnProperty("property");
 
-        return beforeDeleted === true && afterDeleted === false;
-    }
-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-77.js b/test/built-ins/Object/defineProperty/15.2.3.6-3-77.js
index aef4406562b15e32b210b829dbc4cefc32b4e6c6..9d80e8cb7098901907bebc846b0b82aab0fe27a5 100644
--- a/test/built-ins/Object/defineProperty/15.2.3.6-3-77.js
+++ b/test/built-ins/Object/defineProperty/15.2.3.6-3-77.js
@@ -7,10 +7,8 @@ description: >
     Object.defineProperty - 'configurable' property in 'Attributes' is
     own data property that overrides an inherited data property
     (8.10.5 step 4.a)
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
         var obj = { };
 
         var proto = {
@@ -31,6 +29,5 @@ function testcase() {
 
         var afterDeleted = obj.hasOwnProperty("property");
 
-        return beforeDeleted === true && afterDeleted === false;
-    }
-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-78.js b/test/built-ins/Object/defineProperty/15.2.3.6-3-78.js
index 558de6488c6f2b23ee7933d26406d937cb1606e3..7373f43740a9b587d8abb231c1f9f4d7c145366f 100644
--- a/test/built-ins/Object/defineProperty/15.2.3.6-3-78.js
+++ b/test/built-ins/Object/defineProperty/15.2.3.6-3-78.js
@@ -7,10 +7,8 @@ description: >
     Object.defineProperty - 'configurable' property in 'Attributes' is
     own data property that overrides an inherited accessor property
     (8.10.5 step 4.a)
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
         var obj = {};
 
         var proto = { };
@@ -37,6 +35,5 @@ function testcase() {
 
         var afterDeleted = obj.hasOwnProperty("property");
 
-        return beforeDeleted === true && afterDeleted === false;
-    }
-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-79.js b/test/built-ins/Object/defineProperty/15.2.3.6-3-79.js
index 27aad60b1ce55a05b51a5068518a0041d957b7f4..175d52cd68380aefba3a0cca7bba9cb910cbdb24 100644
--- a/test/built-ins/Object/defineProperty/15.2.3.6-3-79.js
+++ b/test/built-ins/Object/defineProperty/15.2.3.6-3-79.js
@@ -6,10 +6,8 @@ es5id: 15.2.3.6-3-79
 description: >
     Object.defineProperty - 'configurable' property in 'Attributes' is
     own accessor property (8.10.5 step 4.a)
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
         var obj = { };
 
         var attr = {};
@@ -27,6 +25,5 @@ function testcase() {
 
         var afterDeleted = obj.hasOwnProperty("property");
 
-        return beforeDeleted === true && afterDeleted === false;
-    }
-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-80.js b/test/built-ins/Object/defineProperty/15.2.3.6-3-80.js
index 9174edb632399d4a9040365d8e930b87d57759f3..c89606b690455bb0932b9331d2c3fe976afaf547 100644
--- a/test/built-ins/Object/defineProperty/15.2.3.6-3-80.js
+++ b/test/built-ins/Object/defineProperty/15.2.3.6-3-80.js
@@ -6,10 +6,8 @@ es5id: 15.2.3.6-3-80
 description: >
     Object.defineProperty - 'configurable' property in 'Attributes' is
     an inherited accessor property (8.10.5 step 4.a)
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
         var obj = {};
 
         var proto = {};
@@ -32,6 +30,5 @@ function testcase() {
 
         var afterDeleted = obj.hasOwnProperty("property");
 
-        return beforeDeleted === true && afterDeleted === false;
-    }
-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-81.js b/test/built-ins/Object/defineProperty/15.2.3.6-3-81.js
index 225758235b8091ab4129754809e40e19ee8a58a4..a4f3021f601a8adc3ae80316cdd78570c144fbca 100644
--- a/test/built-ins/Object/defineProperty/15.2.3.6-3-81.js
+++ b/test/built-ins/Object/defineProperty/15.2.3.6-3-81.js
@@ -7,10 +7,8 @@ description: >
     Object.defineProperty - 'configurable' property in 'Attributes' is
     own accessor property that overrides an inherited data property
     (8.10.5 step 4.a)
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
         var obj = {};
 
         var proto = {
@@ -35,6 +33,5 @@ function testcase() {
 
         var afterDeleted = obj.hasOwnProperty("property");
 
-        return beforeDeleted === true && afterDeleted === false;
-    }
-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-82.js b/test/built-ins/Object/defineProperty/15.2.3.6-3-82.js
index b6ffa2939fdcf98f740c06f654ca209bbfe4e15b..ac8473eff201a2f086a79bc843db285196cba952 100644
--- a/test/built-ins/Object/defineProperty/15.2.3.6-3-82.js
+++ b/test/built-ins/Object/defineProperty/15.2.3.6-3-82.js
@@ -7,10 +7,8 @@ description: >
     Object.defineProperty - 'configurable' property in 'Attributes' is
     own accessor property that overrides an inherited accessor
     property (8.10.5 step 4.a)
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
         var obj = {};
 
         var proto = {};
@@ -38,6 +36,5 @@ function testcase() {
 
         var afterDeleted = obj.hasOwnProperty("property");
 
-        return beforeDeleted === true && afterDeleted === false;
-    }
-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-86.js b/test/built-ins/Object/defineProperty/15.2.3.6-3-86.js
index 1fe52cc2e2980ee5c4f0c4603cf8fb70a84c1979..bccb6771539aee96fa1aa0f9e9bb6beeb0a0c7c9 100644
--- a/test/built-ins/Object/defineProperty/15.2.3.6-3-86.js
+++ b/test/built-ins/Object/defineProperty/15.2.3.6-3-86.js
@@ -7,10 +7,8 @@ description: >
     Object.defineProperty - 'Attributes' is a Function 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 = {};
 
         var funObj = function (a, b) {
@@ -27,6 +25,5 @@ function testcase() {
 
         var afterDeleted = obj.hasOwnProperty("property");
 
-        return beforeDeleted === true && afterDeleted === false;
-    }
-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.js b/test/built-ins/Object/defineProperty/15.2.3.6-3-87.js
index 5108d59d0d4ee0c85657c8778ce74cf1beeb4037..ed16679ea020be9cc1f68d3be83f0c13587dff49 100644
--- a/test/built-ins/Object/defineProperty/15.2.3.6-3-87.js
+++ b/test/built-ins/Object/defineProperty/15.2.3.6-3-87.js
@@ -7,10 +7,8 @@ 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 = { };
 
         var arrObj = [1, 2, 3];
@@ -25,6 +23,5 @@ function testcase() {
 
         var afterDeleted = obj.hasOwnProperty("property");
 
-        return beforeDeleted === true && afterDeleted === false;
-    }
-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.js b/test/built-ins/Object/defineProperty/15.2.3.6-3-88.js
index c196bf2b6f65c48ff4a975e97a8377e50fdb1cf7..4060b4f3a9dff06964eb7f60395c6ea083d2206c 100644
--- a/test/built-ins/Object/defineProperty/15.2.3.6-3-88.js
+++ b/test/built-ins/Object/defineProperty/15.2.3.6-3-88.js
@@ -7,10 +7,8 @@ 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 = { };
 
         var strObj = new String("abc");
@@ -25,6 +23,5 @@ function testcase() {
 
         var afterDeleted = obj.hasOwnProperty("property");
 
-        return beforeDeleted === true && afterDeleted === false;
-    }
-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.js b/test/built-ins/Object/defineProperty/15.2.3.6-3-89.js
index d741fb1e9643bc68fd4d28b27546b685117efe6f..f39c1ed8d0691822c4c5d1ad709c64fd791958d6 100644
--- a/test/built-ins/Object/defineProperty/15.2.3.6-3-89.js
+++ b/test/built-ins/Object/defineProperty/15.2.3.6-3-89.js
@@ -7,10 +7,8 @@ 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 = { };
 
         var boolObj = new Boolean(true);
@@ -25,6 +23,5 @@ function testcase() {
 
         var afterDeleted = obj.hasOwnProperty("property");
 
-        return beforeDeleted === true && afterDeleted === false;
-    }
-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.js b/test/built-ins/Object/defineProperty/15.2.3.6-3-90.js
index 5bba7fe0cbffdd4ce71ff9e3f24013fda8f1a150..e3d3251d93cd9271acbd950f3de024c0b1f5da2d 100644
--- a/test/built-ins/Object/defineProperty/15.2.3.6-3-90.js
+++ b/test/built-ins/Object/defineProperty/15.2.3.6-3-90.js
@@ -7,10 +7,8 @@ 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 = { };
 
         var numObj = new Number(-2);
@@ -25,6 +23,5 @@ function testcase() {
 
         var afterDeleted = obj.hasOwnProperty("property");
 
-        return beforeDeleted === true && afterDeleted === false;
-    }
-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.js b/test/built-ins/Object/defineProperty/15.2.3.6-3-92.js
index a3bc8f14d1d1479e335d02ad8e12df77e3826a68..b245dc17dfcb96514bffff4f9ffa4c9961d7cf28 100644
--- a/test/built-ins/Object/defineProperty/15.2.3.6-3-92.js
+++ b/test/built-ins/Object/defineProperty/15.2.3.6-3-92.js
@@ -7,10 +7,8 @@ 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 = { };
 
         var dateObj = new Date();
@@ -25,6 +23,5 @@ function testcase() {
 
         var afterDeleted = obj.hasOwnProperty("property");
 
-        return beforeDeleted === true && afterDeleted === false;
-    }
-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.js b/test/built-ins/Object/defineProperty/15.2.3.6-3-93.js
index 3cc358ef3d8d023b705d89370f6d58a1e1f1e13a..3657fd461c7daf5e341eafbd7a21ccdcf50b0266 100644
--- a/test/built-ins/Object/defineProperty/15.2.3.6-3-93.js
+++ b/test/built-ins/Object/defineProperty/15.2.3.6-3-93.js
@@ -7,10 +7,8 @@ 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 = { };
 
         var regObj = new RegExp();
@@ -25,6 +23,5 @@ function testcase() {
 
         var afterDeleted = obj.hasOwnProperty("property");
 
-        return beforeDeleted === true && afterDeleted === false;
-    }
-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.js b/test/built-ins/Object/defineProperty/15.2.3.6-3-95.js
index a804fa36419287290c6dba6556464404f47a62ba..f0063df45741b1499f4d346fe877595a0cc76bd2 100644
--- a/test/built-ins/Object/defineProperty/15.2.3.6-3-95.js
+++ b/test/built-ins/Object/defineProperty/15.2.3.6-3-95.js
@@ -7,10 +7,8 @@ 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 = { };
 
         var errObj = new Error();
@@ -25,6 +23,5 @@ function testcase() {
 
         var afterDeleted = obj.hasOwnProperty("property");
 
-        return beforeDeleted === true && afterDeleted === false;
-    }
-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.js b/test/built-ins/Object/defineProperty/15.2.3.6-3-96.js
index 8cb7faeb031596e68b970bc3e3074624838a5e02..97b7217a6c29ae71beb5cc9d08c01b7f1accbe0d 100644
--- a/test/built-ins/Object/defineProperty/15.2.3.6-3-96.js
+++ b/test/built-ins/Object/defineProperty/15.2.3.6-3-96.js
@@ -7,10 +7,8 @@ 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 = {};
 
         var argObj = (function () { return arguments; })();
@@ -24,7 +22,5 @@ function testcase() {
 
         var afterDeleted = obj.hasOwnProperty("property");
 
-        return beforeDeleted === true && afterDeleted === false;
-
-    }
-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-111.js b/test/built-ins/Object/defineProperty/15.2.3.6-4-111.js
index 97562c8c07187ee3560274a7de6c0528677d4b7f..c615651704f13fb5f0f3243d094b9c6be9498d4b 100644
--- a/test/built-ins/Object/defineProperty/15.2.3.6-4-111.js
+++ b/test/built-ins/Object/defineProperty/15.2.3.6-4-111.js
@@ -7,11 +7,8 @@ description: >
     Object.defineProperty  - 'name' and 'desc' are accessor
     properties, name.[[Set]] is present and desc.[[Set]] is undefined
     (8.12.9 step 12)
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
-
         var obj = {};
 
         function getFunc() {
@@ -36,6 +33,6 @@ function testcase() {
 
 
         var desc = Object.getOwnPropertyDescriptor(obj, "foo");
-        return obj.hasOwnProperty("foo") && typeof (desc.set) === "undefined";
-    }
-runTestCase(testcase);
+
+assert(obj.hasOwnProperty("foo"), 'obj.hasOwnProperty("foo") !== true');
+assert.sameValue(typeof (desc.set), "undefined", 'typeof (desc.set)');
diff --git a/test/built-ins/Object/defineProperty/15.2.3.6-4-126.js b/test/built-ins/Object/defineProperty/15.2.3.6-4-126.js
index 1315a184cebc2ceb968048802ddac13dea0f7884..17c5c77b0c8c76f5baa60ab6752335a7b64bebb6 100644
--- a/test/built-ins/Object/defineProperty/15.2.3.6-4-126.js
+++ b/test/built-ins/Object/defineProperty/15.2.3.6-4-126.js
@@ -7,17 +7,12 @@ description: >
     Object.defineProperty - 'O' is an Array, 'name' is the length
     property of 'O', test the [[Value]] field of 'desc' is null
     (15.4.5.1 step 3.c)
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
-
         var arrObj = [0, 1];
 
         Object.defineProperty(arrObj, "length", {
             value: null
         });
-        return arrObj.length === 0;
 
-    }
-runTestCase(testcase);
+assert.sameValue(arrObj.length, 0, 'arrObj.length');
diff --git a/test/built-ins/Object/defineProperty/15.2.3.6-4-127.js b/test/built-ins/Object/defineProperty/15.2.3.6-4-127.js
index 418e14ad0be2718909aa15aaaeb8f95aac4bce17..ca691383c1c2d0638645c4b7a3a3fb5f391965f8 100644
--- a/test/built-ins/Object/defineProperty/15.2.3.6-4-127.js
+++ b/test/built-ins/Object/defineProperty/15.2.3.6-4-127.js
@@ -7,17 +7,14 @@ description: >
     Object.defineProperty - 'O' is an Array, 'name' is the length
     property of 'O', test the [[Value]] field of 'desc' is a boolean
     with value false (15.4.5.1 step 3.c)
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
-
         var arrObj = [0, 1];
 
         Object.defineProperty(arrObj, "length", {
             value: false
         });
-        return arrObj.length === 0 && !arrObj.hasOwnProperty("0") && !arrObj.hasOwnProperty("1");
 
-    }
-runTestCase(testcase);
+assert.sameValue(arrObj.length, 0, 'arrObj.length');
+assert.sameValue(arrObj.hasOwnProperty("0"), false, 'arrObj.hasOwnProperty("0")');
+assert.sameValue(arrObj.hasOwnProperty("1"), false, 'arrObj.hasOwnProperty("1")');
diff --git a/test/built-ins/Object/defineProperty/15.2.3.6-4-128.js b/test/built-ins/Object/defineProperty/15.2.3.6-4-128.js
index a1f49d180b9d3b23cbfc8d3cc7e02208b07992f0..29a46e6e90a69cc923d1a6bb893d7a4bbbc2b261 100644
--- a/test/built-ins/Object/defineProperty/15.2.3.6-4-128.js
+++ b/test/built-ins/Object/defineProperty/15.2.3.6-4-128.js
@@ -7,17 +7,12 @@ description: >
     Object.defineProperty -  'O' is an Array, 'name' is the length
     property of 'O', test the [[Value]] field of 'desc' is a boolean
     with value true (15.4.5.1 step 3.c)
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
-
         var arrObj = [];
 
         Object.defineProperty(arrObj, "length", {
             value: true
         });
-        return arrObj.length === 1;
 
-    }
-runTestCase(testcase);
+assert.sameValue(arrObj.length, 1, 'arrObj.length');
diff --git a/test/built-ins/Object/defineProperty/15.2.3.6-4-129.js b/test/built-ins/Object/defineProperty/15.2.3.6-4-129.js
index 87b6a515e0e9f6813edb0b61f673b1659b8297df..6bb132493e0758c17415dd11ebe632ea6b0b8b83 100644
--- a/test/built-ins/Object/defineProperty/15.2.3.6-4-129.js
+++ b/test/built-ins/Object/defineProperty/15.2.3.6-4-129.js
@@ -7,17 +7,12 @@ description: >
     Object.defineProperty - 'O' is an Array, 'name' is the length
     property of 'O', test RangeError exception is not thrown when the
     [[Value]] field of 'desc' is 0 (15.4.5.1 step 3.c)
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
-
         var arrObj = [0, 1];
 
         Object.defineProperty(arrObj, "length", {
             value: 0
         });
-        return arrObj.length === 0;
 
-    }
-runTestCase(testcase);
+assert.sameValue(arrObj.length, 0, 'arrObj.length');
diff --git a/test/built-ins/Object/defineProperty/15.2.3.6-4-130.js b/test/built-ins/Object/defineProperty/15.2.3.6-4-130.js
index 9abd25c2b3a4f726694b8c799527bddbf383a957..d4d9bf8b7dafdb6ea72529a03e4a3089bbca6fbd 100644
--- a/test/built-ins/Object/defineProperty/15.2.3.6-4-130.js
+++ b/test/built-ins/Object/defineProperty/15.2.3.6-4-130.js
@@ -7,17 +7,12 @@ description: >
     Object.defineProperty - 'O' is an Array, 'name' is the length
     property of 'O', test RangeError exception is not thrown when the
     [[Value]] field of 'desc' is +0 (15.4.5.1 step 3.c)
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
-
         var arrObj = [0, 1];
 
         Object.defineProperty(arrObj, "length", {
             value: +0
         });
-        return arrObj.length === 0;
 
-    }
-runTestCase(testcase);
+assert.sameValue(arrObj.length, 0, 'arrObj.length');
diff --git a/test/built-ins/Object/defineProperty/15.2.3.6-4-131.js b/test/built-ins/Object/defineProperty/15.2.3.6-4-131.js
index 33ef43f418bce0bcfb278753b2aee7dfd1dfd473..3a0b3de429864d680a473a322fbb5607a91d166a 100644
--- a/test/built-ins/Object/defineProperty/15.2.3.6-4-131.js
+++ b/test/built-ins/Object/defineProperty/15.2.3.6-4-131.js
@@ -7,16 +7,12 @@ description: >
     Object.defineProperty - 'O' is an Array, 'name' is the length
     property of 'O', test RangeError exception is not thrown when the
     [[Value]] field of 'desc' is -0 (15.4.5.1 step 3.c)
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
-
         var arrObj = [0, 1];
 
         Object.defineProperty(arrObj, "length", {
             value: -0
         });
-        return arrObj.length === 0;
-    }
-runTestCase(testcase);
+
+assert.sameValue(arrObj.length, 0, 'arrObj.length');
diff --git a/test/built-ins/Object/defineProperty/15.2.3.6-4-132.js b/test/built-ins/Object/defineProperty/15.2.3.6-4-132.js
index c1a02d42ada09398224bb59c1441d2e03ac68e9a..d431841b1bbe6b6ef4c5e1a05d719791443a660e 100644
--- a/test/built-ins/Object/defineProperty/15.2.3.6-4-132.js
+++ b/test/built-ins/Object/defineProperty/15.2.3.6-4-132.js
@@ -7,16 +7,12 @@ description: >
     Object.defineProperty - 'O' is an Array, 'name' is the length
     property of 'O', test RangeError exception is not thrown when the
     [[Value]] field of 'desc' is a positive number (15.4.5.1 step 3.c)
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
-
         var arrObj = [];
 
         Object.defineProperty(arrObj, "length", {
             value: 12
         });
-        return arrObj.length === 12;
-    }
-runTestCase(testcase);
+
+assert.sameValue(arrObj.length, 12, 'arrObj.length');
diff --git a/test/built-ins/Object/defineProperty/15.2.3.6-4-137.js b/test/built-ins/Object/defineProperty/15.2.3.6-4-137.js
index d7463717f12aa99cba979e2d1f9b8831d7b18c48..1e58b7dadd0ae70fccff4307ad9dbe194de8320d 100644
--- a/test/built-ins/Object/defineProperty/15.2.3.6-4-137.js
+++ b/test/built-ins/Object/defineProperty/15.2.3.6-4-137.js
@@ -8,17 +8,12 @@ description: >
     property of 'O', test RangeError exception is not thrown when the
     [[Value]] field of 'desc' is a string containing a positive number
     (15.4.5.1 step 3.c)
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
-
         var arrObj = [];
 
         Object.defineProperty(arrObj, "length", {
             value: "2"
         });
-        return arrObj.length === 2;
 
-    }
-runTestCase(testcase);
+assert.sameValue(arrObj.length, 2, 'arrObj.length');
diff --git a/test/built-ins/Object/defineProperty/15.2.3.6-4-14.js b/test/built-ins/Object/defineProperty/15.2.3.6-4-14.js
index cb5b1e859aae490e83b4ad82b5005a5f52bafe0c..6891f07e56a7e484de661785bd838591f345a335 100644
--- a/test/built-ins/Object/defineProperty/15.2.3.6-4-14.js
+++ b/test/built-ins/Object/defineProperty/15.2.3.6-4-14.js
@@ -10,10 +10,8 @@ es5id: 15.2.3.6-4-14
 description: >
     Object.defineProperty permits changing data property to accessor
     property for configurable properties
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
   var o = {};
 
   // create a data property. In this case,
@@ -32,10 +30,6 @@ function testcase() {
 
   var d2 = Object.getOwnPropertyDescriptor(o, "foo");
 
-  if (d2.get === getter &&
-      d2.enumerable === true &&
-      d2.configurable === true) {
-    return true;
-  }
- }
-runTestCase(testcase);
+assert.sameValue(d2.get, getter, 'd2.get');
+assert.sameValue(d2.enumerable, true, 'd2.enumerable');
+assert.sameValue(d2.configurable, true, 'd2.configurable');
diff --git a/test/built-ins/Object/defineProperty/15.2.3.6-4-142.js b/test/built-ins/Object/defineProperty/15.2.3.6-4-142.js
index b58401faa7ba243adb2db6c0e98582e2ee3d172d..8880cf8cfe381ef9bf2618788a5e6214f8bf8808 100644
--- a/test/built-ins/Object/defineProperty/15.2.3.6-4-142.js
+++ b/test/built-ins/Object/defineProperty/15.2.3.6-4-142.js
@@ -7,16 +7,12 @@ description: >
     Object.defineProperty - 'O' is an Array, 'name' is the length
     property of 'O', test the [[Value]] field of 'desc' is a string
     containing an exponential number (15.4.5.1 step 3.c)
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
-
         var arrObj = [];
 
         Object.defineProperty(arrObj, "length", {
             value: "2E3"
         });
-        return arrObj.length === 2E3;
-    }
-runTestCase(testcase);
+
+assert.sameValue(arrObj.length, 2E3, 'arrObj.length');
diff --git a/test/built-ins/Object/defineProperty/15.2.3.6-4-143.js b/test/built-ins/Object/defineProperty/15.2.3.6-4-143.js
index 22814ff8d2778a70d9d31b2a7e68a4dcc6719c88..55b9b1ffd8cee5e877e89e5ca258412a36034eac 100644
--- a/test/built-ins/Object/defineProperty/15.2.3.6-4-143.js
+++ b/test/built-ins/Object/defineProperty/15.2.3.6-4-143.js
@@ -7,16 +7,12 @@ description: >
     Object.defineProperty - 'O' is an Array, 'name' is the length
     property of 'O', test the [[Value]] field of 'desc' is a string
     containing a hex number (15.4.5.1 step 3.c)
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
-
         var arrObj = [];
 
         Object.defineProperty(arrObj, "length", {
             value: "0x00B"
         });
-        return arrObj.length === 0x00B;
-    }
-runTestCase(testcase);
+
+assert.sameValue(arrObj.length, 0x00B, 'arrObj.length');
diff --git a/test/built-ins/Object/defineProperty/15.2.3.6-4-144.js b/test/built-ins/Object/defineProperty/15.2.3.6-4-144.js
index 1a2dc2f8bd643a1b087029a3131ba08e38aca905..be700ec7640cf0f670f30939a90229ab48693b40 100644
--- a/test/built-ins/Object/defineProperty/15.2.3.6-4-144.js
+++ b/test/built-ins/Object/defineProperty/15.2.3.6-4-144.js
@@ -7,16 +7,12 @@ description: >
     Object.defineProperty - 'O' is an Array, 'name' is the length
     property of 'O', test the [[Value]] field of 'desc' is a string
     containing a number with leading zeros (15.4.5.1 step 3.c)
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
-
         var arrObj = [];
 
         Object.defineProperty(arrObj, "length", {
             value: "0002.0"
         });
-        return arrObj.length === 2;
-    }
-runTestCase(testcase);
+
+assert.sameValue(arrObj.length, 2, 'arrObj.length');
diff --git a/test/built-ins/Object/defineProperty/15.2.3.6-4-146.js b/test/built-ins/Object/defineProperty/15.2.3.6-4-146.js
index af9a768ae4cce88da0a8b3704c447a3d5655ef63..565369fb713fc1535c8ed8b9c3c62d4d91b3cdf1 100644
--- a/test/built-ins/Object/defineProperty/15.2.3.6-4-146.js
+++ b/test/built-ins/Object/defineProperty/15.2.3.6-4-146.js
@@ -7,11 +7,8 @@ description: >
     Object.defineProperty - 'O' is an Array, 'name' is the length
     property of 'O', test the [[Value]] field of 'desc' is an object
     which has an own toString method (15.4.5.1 step 3.c)
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
-
         var arrObj = [];
 
         Object.defineProperty(arrObj, "length", {
@@ -21,7 +18,5 @@ function testcase() {
                 } 
             }
         });
-        return arrObj.length === 2;
 
-    }
-runTestCase(testcase);
+assert.sameValue(arrObj.length, 2, 'arrObj.length');
diff --git a/test/built-ins/Object/defineProperty/15.2.3.6-4-147.js b/test/built-ins/Object/defineProperty/15.2.3.6-4-147.js
index 67b40a9a10f1d4e9d4840e52d98bb0d8010b6e0b..4274ebbb3b9b7552a95b9c209f42d713710242d9 100644
--- a/test/built-ins/Object/defineProperty/15.2.3.6-4-147.js
+++ b/test/built-ins/Object/defineProperty/15.2.3.6-4-147.js
@@ -7,11 +7,8 @@ description: >
     Object.defineProperty - 'O' is an Array, 'name' is the length
     property of 'O', test the [[Value]] field of 'desc' is an Object
     which has an own valueOf method (15.4.5.1 step 3.c)
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
-
         var arrObj = [];
 
         Object.defineProperty(arrObj, "length", {
@@ -21,7 +18,5 @@ function testcase() {
                 }
             }
         });
-        return arrObj.length === 2;
 
-    }
-runTestCase(testcase);
+assert.sameValue(arrObj.length, 2, 'arrObj.length');
diff --git a/test/built-ins/Object/defineProperty/15.2.3.6-4-148.js b/test/built-ins/Object/defineProperty/15.2.3.6-4-148.js
index 24784a4d6978fe5734ec389a40d6e5733d46d280..19cb735ae7256ab2655db5038bcb47266a190752 100644
--- a/test/built-ins/Object/defineProperty/15.2.3.6-4-148.js
+++ b/test/built-ins/Object/defineProperty/15.2.3.6-4-148.js
@@ -8,11 +8,8 @@ description: >
     property of 'O', test the [[Value]] field of 'desc' is an Object
     which has an own valueOf method that returns an object and
     toString method that returns a string (15.4.5.1 step 3.c)
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
-
         var arrObj = [];
         var toStringAccessed = false;
         var valueOfAccessed = false;
@@ -30,7 +27,7 @@ function testcase() {
                 }
             }
         });
-        return arrObj.length === 2 && toStringAccessed && valueOfAccessed;
 
-    }
-runTestCase(testcase);
+assert.sameValue(arrObj.length, 2, 'arrObj.length');
+assert(toStringAccessed, 'toStringAccessed !== true');
+assert(valueOfAccessed, 'valueOfAccessed !== true');
diff --git a/test/built-ins/Object/defineProperty/15.2.3.6-4-149.js b/test/built-ins/Object/defineProperty/15.2.3.6-4-149.js
index 86c1df18bafa8650f13af15ce39cde317690ec59..dbcbc3fa385f9d435a8820ee33fd19c096a37f6f 100644
--- a/test/built-ins/Object/defineProperty/15.2.3.6-4-149.js
+++ b/test/built-ins/Object/defineProperty/15.2.3.6-4-149.js
@@ -7,11 +7,8 @@ description: >
     Object.defineProperty - 'O' is an Array, 'name' is the length
     property of 'O', test the [[Value]] field of 'desc' is an Object
     which has an own toString and valueOf method (15.4.5.1 step 3.c)
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
-
         var arrObj = [];
         var toStringAccessed = false;
         var valueOfAccessed = false;
@@ -29,7 +26,7 @@ function testcase() {
                 }
             }
         });
-        return arrObj.length === 3 && !toStringAccessed && valueOfAccessed;
 
-    }
-runTestCase(testcase);
+assert.sameValue(arrObj.length, 3, 'arrObj.length');
+assert.sameValue(toStringAccessed, false, 'toStringAccessed');
+assert(valueOfAccessed, 'valueOfAccessed !== true');
diff --git a/test/built-ins/Object/defineProperty/15.2.3.6-4-15.js b/test/built-ins/Object/defineProperty/15.2.3.6-4-15.js
index 578e94d50f1db38e1fc642f7bd67922b5d4285bb..115f1864eea7c21926c65b9cd9f4f51018a4f8f6 100644
--- a/test/built-ins/Object/defineProperty/15.2.3.6-4-15.js
+++ b/test/built-ins/Object/defineProperty/15.2.3.6-4-15.js
@@ -10,10 +10,8 @@ es5id: 15.2.3.6-4-15
 description: >
     Object.defineProperty permits changing accessor property to data
     property for configurable properties
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
   var o = {};
 
   // define an accessor property
@@ -30,11 +28,7 @@ function testcase() {
   Object.defineProperty(o, "foo", desc);
   var d2 = Object.getOwnPropertyDescriptor(o, "foo");
 
-  if (d2.value === 101 &&
-      d2.writable === false &&
-      d2.enumerable === false &&
-      d2.configurable === true) {
-    return true;
-  }
- }
-runTestCase(testcase);
+assert.sameValue(d2.value, 101, 'd2.value');
+assert.sameValue(d2.writable, false, 'd2.writable');
+assert.sameValue(d2.enumerable, false, 'd2.enumerable');
+assert.sameValue(d2.configurable, true, 'd2.configurable');
diff --git a/test/built-ins/Object/defineProperty/15.2.3.6-4-151.js b/test/built-ins/Object/defineProperty/15.2.3.6-4-151.js
index c92b6deda6c924fdaf3d501319a8d5642b790c80..4cce1420734c527860e525148f90b983c19cc5f5 100644
--- a/test/built-ins/Object/defineProperty/15.2.3.6-4-151.js
+++ b/test/built-ins/Object/defineProperty/15.2.3.6-4-151.js
@@ -8,11 +8,8 @@ description: >
     property of 'O', and the [[Value]] field of 'desc' is an Object
     with an own toString method and an inherited valueOf method
     (15.4.5.1 step 3.c), test that the inherited valueOf method is used
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
-
         var arrObj = [];
         var toStringAccessed = false;
         var valueOfAccessed = false;
@@ -36,7 +33,7 @@ function testcase() {
         Object.defineProperty(arrObj, "length", {
             value: child
         });
-        return arrObj.length === 2 && !toStringAccessed && valueOfAccessed;
 
-    }
-runTestCase(testcase);
+assert.sameValue(arrObj.length, 2, 'arrObj.length');
+assert.sameValue(toStringAccessed, false, 'toStringAccessed');
+assert(valueOfAccessed, 'valueOfAccessed !== true');
diff --git a/test/built-ins/Object/defineProperty/15.2.3.6-4-154.js b/test/built-ins/Object/defineProperty/15.2.3.6-4-154.js
index 5291e5bc39174d7f255bd7ac4d5e26f5f9b9f5c9..c499969dd60f43d1e7f3a69d4414b8f31ac13cac 100644
--- a/test/built-ins/Object/defineProperty/15.2.3.6-4-154.js
+++ b/test/built-ins/Object/defineProperty/15.2.3.6-4-154.js
@@ -7,18 +7,12 @@ description: >
     Object.defineProperty - 'O' is an Array, 'name' is the length
     property of 'O', test the [[Value]] field of 'desc' is boundary
     value 2^32 - 2 (15.4.5.1 step 3.c)
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
-
         var arrObj = [];
 
         Object.defineProperty(arrObj, "length", {
             value: 4294967294 
         });
 
-        return arrObj.length === 4294967294;
-
-    }
-runTestCase(testcase);
+assert.sameValue(arrObj.length, 4294967294, 'arrObj.length');
diff --git a/test/built-ins/Object/defineProperty/15.2.3.6-4-155.js b/test/built-ins/Object/defineProperty/15.2.3.6-4-155.js
index c47bb2078705082be7a91075029ac9f001e6e501..b9bfd06898b7301052b43534997b46195f022d1f 100644
--- a/test/built-ins/Object/defineProperty/15.2.3.6-4-155.js
+++ b/test/built-ins/Object/defineProperty/15.2.3.6-4-155.js
@@ -7,18 +7,12 @@ description: >
     Object.defineProperty - 'O' is an Array, 'name' is the length
     property of 'O', test the [[Value]] field of 'desc' is boundary
     value 2^32 - 1 (15.4.5.1 step 3.c)
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
-
         var arrObj = [];
 
         Object.defineProperty(arrObj, "length", {
             value: 4294967295
         });
 
-        return arrObj.length === 4294967295;
-
-    }
-runTestCase(testcase);
+assert.sameValue(arrObj.length, 4294967295, 'arrObj.length');
diff --git a/test/built-ins/Object/defineProperty/15.2.3.6-4-159.js b/test/built-ins/Object/defineProperty/15.2.3.6-4-159.js
index df937e2312fa080fbffeb3854351332d42983213..06246ef3e2d8cfcf39c8207d0edceb1532d1c80e 100644
--- a/test/built-ins/Object/defineProperty/15.2.3.6-4-159.js
+++ b/test/built-ins/Object/defineProperty/15.2.3.6-4-159.js
@@ -7,19 +7,16 @@ description: >
     Object.defineProperty - 'O' is an Array, 'name' is the length
     property of 'O', set the [[Value]] field of 'desc' to a value
     greater than the existing value of length (15.4.5.1 step 3.f)
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
-
         var arrObj = [0, , 2];
 
         Object.defineProperty(arrObj, "length", {
             value: 5
         });
 
-        return arrObj.length === 5 && arrObj[0] === 0 &&
-            !arrObj.hasOwnProperty("1") && arrObj[2] === 2 &&
-            !arrObj.hasOwnProperty("4");
-    }
-runTestCase(testcase);
+assert.sameValue(arrObj.length, 5, 'arrObj.length');
+assert.sameValue(arrObj[0], 0, 'arrObj[0]');
+assert.sameValue(arrObj.hasOwnProperty("1"), false, 'arrObj.hasOwnProperty("1")');
+assert.sameValue(arrObj[2], 2, 'arrObj[2]');
+assert.sameValue(arrObj.hasOwnProperty("4"), false, 'arrObj.hasOwnProperty("4")');
diff --git a/test/built-ins/Object/defineProperty/15.2.3.6-4-160.js b/test/built-ins/Object/defineProperty/15.2.3.6-4-160.js
index 4b301bb7c81352274d63a944a4b95975e0a7e698..889d911dfee4a1937cdc8656fc6366812d4bee49 100644
--- a/test/built-ins/Object/defineProperty/15.2.3.6-4-160.js
+++ b/test/built-ins/Object/defineProperty/15.2.3.6-4-160.js
@@ -7,17 +7,15 @@ description: >
     Object.defineProperty - 'O' is an Array, 'name' is the length
     property of 'O', set the [[Value]] field of 'desc' to a value
     equal to the existing value of length (15.4.5.1 step 3.f)
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
-
         var arrObj = [0, , 2];
 
         Object.defineProperty(arrObj, "length", {
             value: 3
         });
 
-        return arrObj.length === 3 && arrObj[0] === 0 && !arrObj.hasOwnProperty("1") && arrObj[2] === 2;
-    }
-runTestCase(testcase);
+assert.sameValue(arrObj.length, 3, 'arrObj.length');
+assert.sameValue(arrObj[0], 0, 'arrObj[0]');
+assert.sameValue(arrObj.hasOwnProperty("1"), false, 'arrObj.hasOwnProperty("1")');
+assert.sameValue(arrObj[2], 2, 'arrObj[2]');
diff --git a/test/built-ins/Object/defineProperty/15.2.3.6-4-161.js b/test/built-ins/Object/defineProperty/15.2.3.6-4-161.js
index a68df7536b16fd907d0057a95bfa92c97a2d41ab..881a01347c1da56328432620b24f946ae0e96219 100644
--- a/test/built-ins/Object/defineProperty/15.2.3.6-4-161.js
+++ b/test/built-ins/Object/defineProperty/15.2.3.6-4-161.js
@@ -8,16 +8,13 @@ description: >
     property of 'O', set the [[Value]] field of 'desc' to a value
     lesser than the existing value of length and test that indexes
     beyond the new length are deleted(15.4.5.1 step 3.f)
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
-
         var arrObj = [0, 1];
         
         Object.defineProperty(arrObj, "length", {
             value: 1
         });
-        return arrObj.length === 1 && !arrObj.hasOwnProperty("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-165.js b/test/built-ins/Object/defineProperty/15.2.3.6-4-165.js
index cfc3b4c200a593f4e3063708f3bb306d4b5613e0..4a72cda654d4daa6c259804a36563ba801a88da5 100644
--- a/test/built-ins/Object/defineProperty/15.2.3.6-4-165.js
+++ b/test/built-ins/Object/defineProperty/15.2.3.6-4-165.js
@@ -10,11 +10,8 @@ description: >
     length property is set to true after deleting properties with
     large index named if the [[Writable]] field of 'desc' is absent
     (15.4.5.1 step 3.h)
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
-
         var arrObj = [0, 1];
 
         Object.defineProperty(arrObj, "length", {
@@ -25,6 +22,5 @@ function testcase() {
 
         arrObj.length = 10;
 
-        return indexDeleted && arrObj.length === 10;
-    }
-runTestCase(testcase);
+assert(indexDeleted, 'indexDeleted !== true');
+assert.sameValue(arrObj.length, 10, 'arrObj.length');
diff --git a/test/built-ins/Object/defineProperty/15.2.3.6-4-166.js b/test/built-ins/Object/defineProperty/15.2.3.6-4-166.js
index 51d7c9acc5e7aea4d7f2a55fb0121033b26a0bef..85c2e654df48654cd18b3ecfcfcd04314805e145 100644
--- a/test/built-ins/Object/defineProperty/15.2.3.6-4-166.js
+++ b/test/built-ins/Object/defineProperty/15.2.3.6-4-166.js
@@ -10,11 +10,8 @@ description: >
     length property is set to true after deleting properties with
     large index named if the [[Writable]] field of 'desc' is true
     (15.4.5.1 step 3.h)
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
-
         var arrObj = [0, 1];
 
         Object.defineProperty(arrObj, "length", {
@@ -26,6 +23,5 @@ function testcase() {
 
         arrObj.length = 10;
 
-        return indexDeleted && arrObj.length === 10;
-    }
-runTestCase(testcase);
+assert(indexDeleted, 'indexDeleted !== true');
+assert.sameValue(arrObj.length, 10, 'arrObj.length');
diff --git a/test/built-ins/Object/defineProperty/15.2.3.6-4-178.js b/test/built-ins/Object/defineProperty/15.2.3.6-4-178.js
index 44e9feb3da00b1ff151c5f37d25a4a5fc81b0809..10a208b9b4292c49ad17ab0077e0dda1965a81a2 100644
--- a/test/built-ins/Object/defineProperty/15.2.3.6-4-178.js
+++ b/test/built-ins/Object/defineProperty/15.2.3.6-4-178.js
@@ -8,17 +8,12 @@ description: >
     property of 'O', the [[Value]] field of 'desc' is less than value
     of  the length property, test the configurable large index named
     property of 'O' is deleted (15.4.5.1 step 3.l.ii)
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
-
         var arrObj = [0, 1];
 
         Object.defineProperty(arrObj, "length", {
             value: 1
         });
 
-        return !arrObj.hasOwnProperty("1");
-    }
-runTestCase(testcase);
+assert.sameValue(arrObj.hasOwnProperty("1"), false, 'arrObj.hasOwnProperty("1")');
diff --git a/test/built-ins/Object/defineProperty/15.2.3.6-4-179-1.js b/test/built-ins/Object/defineProperty/15.2.3.6-4-179-1.js
index 059f46325c2d6d3ff0d822213145bd1621c05dbe..d59c20d30df21bce422d97b9f58d8963d39fee6e 100644
--- a/test/built-ins/Object/defineProperty/15.2.3.6-4-179-1.js
+++ b/test/built-ins/Object/defineProperty/15.2.3.6-4-179-1.js
@@ -8,10 +8,8 @@ description: >
     property of 'O', the [[Value]] field of 'desc' is greater than
     value of  the length property, test value of the length property
     is same as [[Value]] (15.4.5.1 step 3.l.iii.1)
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
         var arrObj = [0, 1, 2, 3];
 
         Object.defineProperty(arrObj, "1", {
@@ -22,6 +20,4 @@ function testcase() {
             value: 3
         });          
 
-        return arrObj.length === 3;
-    }
-runTestCase(testcase);
+assert.sameValue(arrObj.length, 3, 'arrObj.length');
diff --git a/test/built-ins/Object/defineProperty/15.2.3.6-4-182.js b/test/built-ins/Object/defineProperty/15.2.3.6-4-182.js
index bf54ebd0ec1ebc6fad45108352ddb6882266d20e..9f3e38ad089117548e6ca872a6f24438f78155d8 100644
--- a/test/built-ins/Object/defineProperty/15.2.3.6-4-182.js
+++ b/test/built-ins/Object/defineProperty/15.2.3.6-4-182.js
@@ -7,17 +7,12 @@ description: >
     Object.defineProperty - 'O' is an Array, 'name' is an array index
     named property, 'name' is available String values that convert to
     numbers (15.4.5.1 step 4.a)
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
-
         var arrObj = [];
 
         Object.defineProperty(arrObj, "0", {
             value: 12
         });
 
-        return arrObj[0] === 12;
-    }
-runTestCase(testcase);
+assert.sameValue(arrObj[0], 12, 'arrObj[0]');
diff --git a/test/built-ins/Object/defineProperty/15.2.3.6-4-183.js b/test/built-ins/Object/defineProperty/15.2.3.6-4-183.js
index 161afe732dc07dc67c7336e07a0a2ab8d33f4937..3fa0485ebd708b09945e24063e0818ef6a0ce854 100644
--- a/test/built-ins/Object/defineProperty/15.2.3.6-4-183.js
+++ b/test/built-ins/Object/defineProperty/15.2.3.6-4-183.js
@@ -7,16 +7,14 @@ description: >
     Object.defineProperty - 'O' is an Array, 'name' is an array index
     named property, 'name' is boundary value 2^32 - 2 (15.4.5.1 step
     4.a)
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
         var arrObj = [];
 
         Object.defineProperty(arrObj, 4294967294, {
             value: 100
         });
 
-        return arrObj.hasOwnProperty("4294967294") && arrObj.length === 4294967295 && arrObj[4294967294] === 100;
-    }
-runTestCase(testcase);
+assert(arrObj.hasOwnProperty("4294967294"), 'arrObj.hasOwnProperty("4294967294") !== true');
+assert.sameValue(arrObj.length, 4294967295, 'arrObj.length');
+assert.sameValue(arrObj[4294967294], 100, 'arrObj[4294967294]');
diff --git a/test/built-ins/Object/defineProperty/15.2.3.6-4-184.js b/test/built-ins/Object/defineProperty/15.2.3.6-4-184.js
index 208c85cadace7f6d9516ee71ee172ab87505c4c0..b3678ae489cb740e28a0b0a9542a9d494e39a9b4 100644
--- a/test/built-ins/Object/defineProperty/15.2.3.6-4-184.js
+++ b/test/built-ins/Object/defineProperty/15.2.3.6-4-184.js
@@ -7,16 +7,14 @@ description: >
     Object.defineProperty - 'O' is an Array, 'name' is an array index
     named property, 'name' is boundary value 2^32 - 1 (15.4.5.1 step
     4.a)
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
         var arrObj = [];
 
         Object.defineProperty(arrObj, 4294967295, {
             value: 100
         });
 
-        return arrObj.hasOwnProperty("4294967295") && arrObj.length === 0 && arrObj[4294967295] === 100; ;
-    }
-runTestCase(testcase);
+assert(arrObj.hasOwnProperty("4294967295"), 'arrObj.hasOwnProperty("4294967295") !== true');
+assert.sameValue(arrObj.length, 0, 'arrObj.length');
+assert.sameValue(arrObj[4294967295], 100, 'arrObj[4294967295]');
diff --git a/test/built-ins/Object/defineProperty/15.2.3.6-4-185.js b/test/built-ins/Object/defineProperty/15.2.3.6-4-185.js
index 18d3c9093d6e2ac7f5d3fb1da465ff2b5b7a4410..c99ce71065cd0e57a1be9bb090ac7d1d3197dcf3 100644
--- a/test/built-ins/Object/defineProperty/15.2.3.6-4-185.js
+++ b/test/built-ins/Object/defineProperty/15.2.3.6-4-185.js
@@ -6,16 +6,14 @@ es5id: 15.2.3.6-4-185
 description: >
     Object.defineProperty - 'O' is an Array, 'name' is an array index
     named property, 'name' is boundary value 2^32 (15.4.5.1 step 4.a)
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
         var arrObj = [];
 
         Object.defineProperty(arrObj, 4294967296, {
             value: 100
         });
 
-        return arrObj.hasOwnProperty("4294967296") && arrObj.length === 0 && arrObj[4294967296] === 100;
-    }
-runTestCase(testcase);
+assert(arrObj.hasOwnProperty("4294967296"), 'arrObj.hasOwnProperty("4294967296") !== true');
+assert.sameValue(arrObj.length, 0, 'arrObj.length');
+assert.sameValue(arrObj[4294967296], 100, 'arrObj[4294967296]');
diff --git a/test/built-ins/Object/defineProperty/15.2.3.6-4-186.js b/test/built-ins/Object/defineProperty/15.2.3.6-4-186.js
index 9ae21fb2bca7092cdc9fb2ccc25e9e21ef525b8c..0af8105b085d73b8214e7cf71a416aea22851118 100644
--- a/test/built-ins/Object/defineProperty/15.2.3.6-4-186.js
+++ b/test/built-ins/Object/defineProperty/15.2.3.6-4-186.js
@@ -7,16 +7,14 @@ description: >
     Object.defineProperty - 'O' is an Array, 'name' is an array index
     named property, 'name' is boundary value 2^32 + 1 (15.4.5.1 step
     4.a)
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
         var arrObj = [];
 
         Object.defineProperty(arrObj, 4294967297, {
             value: 100
         });
 
-        return arrObj.hasOwnProperty("4294967297") && arrObj.length === 0 && arrObj[4294967297] === 100;
-    }
-runTestCase(testcase);
+assert(arrObj.hasOwnProperty("4294967297"), 'arrObj.hasOwnProperty("4294967297") !== true');
+assert.sameValue(arrObj.length, 0, 'arrObj.length');
+assert.sameValue(arrObj[4294967297], 100, 'arrObj[4294967297]');
diff --git a/test/built-ins/Object/defineProperty/15.2.3.6-4-19.js b/test/built-ins/Object/defineProperty/15.2.3.6-4-19.js
index 1278e03a09772cb778041694dfe447ccc53faedc..a469574ece36654b8038582bce837d309240a669 100644
--- a/test/built-ins/Object/defineProperty/15.2.3.6-4-19.js
+++ b/test/built-ins/Object/defineProperty/15.2.3.6-4-19.js
@@ -10,10 +10,8 @@ es5id: 15.2.3.6-4-19
 description: >
     Object.defineProperty permits setting a setter (if absent) of
     non-configurable accessor properties(8.12.9 step 10.a.ii.1)
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
   var o = {};
 
   // create an accessor property; all other attributes default to false.
@@ -29,11 +27,7 @@ function testcase() {
 
   var d2 = Object.getOwnPropertyDescriptor(o, "foo");
 
-  if (d2.get === getter &&
-	  d2.set === undefined &&
-	  d2.configurable === false &&
-	  d2.enumerable === false) {
-	return true;
-  }
- }
-runTestCase(testcase);
+assert.sameValue(d2.get, getter, 'd2.get');
+assert.sameValue(d2.set, undefined, 'd2.set');
+assert.sameValue(d2.configurable, false, 'd2.configurable');
+assert.sameValue(d2.enumerable, false, 'd2.enumerable');
diff --git a/test/built-ins/Object/defineProperty/15.2.3.6-4-206.js b/test/built-ins/Object/defineProperty/15.2.3.6-4-206.js
index 3ac2e464b6f5854f3b231001d17bacfe64a60b7b..50a9bc2ad8dda31b317f14127d0a5d0acd6d6ebb 100644
--- a/test/built-ins/Object/defineProperty/15.2.3.6-4-206.js
+++ b/test/built-ins/Object/defineProperty/15.2.3.6-4-206.js
@@ -8,10 +8,8 @@ description: >
     named property, 'name' property doesn't exist in 'O', test [[Set]]
     of 'name' property in 'Attributes' is set as undefined if [[Set]]
     is absent in accessor descriptor 'desc' (15.4.5.1 step 4.c)
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
         var arrObj = [];
         var getFunc = function () { };
 
@@ -23,6 +21,6 @@ function testcase() {
 
         var desc = Object.getOwnPropertyDescriptor(arrObj, "0");
 
-        return arrObj.hasOwnProperty("0") && desc.hasOwnProperty("set") && typeof desc.set === "undefined";
-    }
-runTestCase(testcase);
+assert(arrObj.hasOwnProperty("0"), 'arrObj.hasOwnProperty("0") !== true');
+assert(desc.hasOwnProperty("set"), 'desc.hasOwnProperty("set") !== true');
+assert.sameValue(typeof desc.set, "undefined", 'typeof desc.set');
diff --git a/test/built-ins/Object/defineProperty/15.2.3.6-4-21.js b/test/built-ins/Object/defineProperty/15.2.3.6-4-21.js
index d2111326e7014280ac9f862a747c583aeca9340c..edde570bd5ded794f1c608f34364ac1aeb0fa82e 100644
--- a/test/built-ins/Object/defineProperty/15.2.3.6-4-21.js
+++ b/test/built-ins/Object/defineProperty/15.2.3.6-4-21.js
@@ -10,10 +10,8 @@ es5id: 15.2.3.6-4-21
 description: >
     Object.defineProperty permits setting a getter (if absent) of
     non-configurable accessor properties(8.12.9 step 11.a.ii)
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
   var o = {};
 
   // create an accessor property; all other attributes default to false.
@@ -30,11 +28,7 @@ function testcase() {
   Object.defineProperty(o, "foo", desc);
   var d2 = Object.getOwnPropertyDescriptor(o, "foo");
 
-  if (d2.get === getter &&
-      d2.set === setter &&
-      d2.configurable === false &&
-      d2.enumerable === false) {
-    return true;
-  }
- }
-runTestCase(testcase);
+assert.sameValue(d2.get, getter, 'd2.get');
+assert.sameValue(d2.set, setter, 'd2.set');
+assert.sameValue(d2.configurable, false, 'd2.configurable');
+assert.sameValue(d2.enumerable, false, 'd2.enumerable');
diff --git a/test/built-ins/Object/defineProperty/15.2.3.6-4-23.js b/test/built-ins/Object/defineProperty/15.2.3.6-4-23.js
index d1f70c8553c50f1f810473485f44d6d5471984a9..6acf72daa3f2e5c4a74bb930f118634544d2b424 100644
--- a/test/built-ins/Object/defineProperty/15.2.3.6-4-23.js
+++ b/test/built-ins/Object/defineProperty/15.2.3.6-4-23.js
@@ -6,10 +6,8 @@ es5id: 15.2.3.6-4-23
 description: >
     Object.defineProperty - 'name' is existing an inherited data
     property (8.12.9 step 1)
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
         var proto = {};
         Object.defineProperty(proto, "foo", {
             value: 11,
@@ -23,6 +21,6 @@ function testcase() {
         Object.defineProperty(obj, "foo", {
             configurable: true
         });
-        return obj.hasOwnProperty("foo") && (typeof obj.foo) === "undefined";
-    }
-runTestCase(testcase);
+
+assert(obj.hasOwnProperty("foo"), 'obj.hasOwnProperty("foo") !== true');
+assert.sameValue(typeof obj.foo, "undefined", 'typeof obj.foo');
diff --git a/test/built-ins/Object/defineProperty/15.2.3.6-4-27.js b/test/built-ins/Object/defineProperty/15.2.3.6-4-27.js
index ce7d3e345d01ee849d3c09f4f0a39df314ff1050..01f897d3b410c41b78b3fc58ac312b450fae2b50 100644
--- a/test/built-ins/Object/defineProperty/15.2.3.6-4-27.js
+++ b/test/built-ins/Object/defineProperty/15.2.3.6-4-27.js
@@ -6,10 +6,8 @@ es5id: 15.2.3.6-4-27
 description: >
     Object.defineProperty - 'name' is an inherited accessor property
     (8.12.9 step 1)
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
         var proto = {};
         Object.defineProperty(proto, "property", {
             get: function () {
@@ -28,6 +26,6 @@ function testcase() {
             },
             configurable: true
         });
-        return obj.hasOwnProperty("property") && obj.property === 12;
-    }
-runTestCase(testcase);
+
+assert(obj.hasOwnProperty("property"), 'obj.hasOwnProperty("property") !== true');
+assert.sameValue(obj.property, 12, 'obj.property');
diff --git a/test/built-ins/Object/defineProperty/15.2.3.6-4-274.js b/test/built-ins/Object/defineProperty/15.2.3.6-4-274.js
index 3c89b165c20b7732811411f7fca9e6c9934a453e..3ffc0976aeb79212ca5627a1792c8b2e079620a4 100644
--- a/test/built-ins/Object/defineProperty/15.2.3.6-4-274.js
+++ b/test/built-ins/Object/defineProperty/15.2.3.6-4-274.js
@@ -8,11 +8,8 @@ description: >
     named property, test the length property of 'O' is not changed if
     ToUint32('name') is less than value of the length property in 'O'
     (15.4.5.1 step 4.e)
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
-
         var arrObj = [];
         arrObj.length = 3; // default value of length: writable: true, configurable: false, enumerable: false
 
@@ -20,6 +17,5 @@ function testcase() {
             value: 14
         });
 
-        return arrObj.length === 3 && arrObj[1] === 14;
-    }
-runTestCase(testcase);
+assert.sameValue(arrObj.length, 3, 'arrObj.length');
+assert.sameValue(arrObj[1], 14, 'arrObj[1]');
diff --git a/test/built-ins/Object/defineProperty/15.2.3.6-4-275.js b/test/built-ins/Object/defineProperty/15.2.3.6-4-275.js
index ed9f39accd79ab4efd01c479e487d3ffe445fb65..314b3a9a67cfe9a8c4b12b9c7f4b2f062632d19a 100644
--- a/test/built-ins/Object/defineProperty/15.2.3.6-4-275.js
+++ b/test/built-ins/Object/defineProperty/15.2.3.6-4-275.js
@@ -8,11 +8,8 @@ description: >
     named property, test the length property of 'O' is set as
     ToUint32('name') + 1 if ToUint32('name') equals to value of the
     length property in 'O' (15.4.5.1 step 4.e.ii)
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
-
         var arrObj = [];
         arrObj.length = 3; // default value of length: writable: true, configurable: false, enumerable: false
 
@@ -20,6 +17,5 @@ function testcase() {
             value: 3
         });
 
-        return arrObj.length === 4 && arrObj[3] === 3;
-    }
-runTestCase(testcase);
+assert.sameValue(arrObj.length, 4, 'arrObj.length');
+assert.sameValue(arrObj[3], 3, 'arrObj[3]');
diff --git a/test/built-ins/Object/defineProperty/15.2.3.6-4-276.js b/test/built-ins/Object/defineProperty/15.2.3.6-4-276.js
index efa4becead0f99426766175598a7ef45bbd9e8f8..ec26b3097927d827ea256e8bfebc25324a544f4e 100644
--- a/test/built-ins/Object/defineProperty/15.2.3.6-4-276.js
+++ b/test/built-ins/Object/defineProperty/15.2.3.6-4-276.js
@@ -8,17 +8,13 @@ description: >
     named property, test the length property of 'O' is set as
     ToUint32('name') + 1 if ToUint32('name') is greater than value of
     the length property in 'O' (15.4.5.1 step 4.e.ii)
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
-
         var arrObj = [];
 
         Object.defineProperty(arrObj, "5", {
             value: 3
         });
 
-        return arrObj.length === 6 && arrObj[5] === 3;
-    }
-runTestCase(testcase);
+assert.sameValue(arrObj.length, 6, 'arrObj.length');
+assert.sameValue(arrObj[5], 3, 'arrObj[5]');
diff --git a/test/built-ins/Object/defineProperty/15.2.3.6-4-32.js b/test/built-ins/Object/defineProperty/15.2.3.6-4-32.js
index 33715790646668533f184874ba79040b793c913d..858591bc5d38700d31e7071fae74e593c0f0b614 100644
--- a/test/built-ins/Object/defineProperty/15.2.3.6-4-32.js
+++ b/test/built-ins/Object/defineProperty/15.2.3.6-4-32.js
@@ -6,10 +6,8 @@ es5id: 15.2.3.6-4-32
 description: >
     Object.defineProperty - 'name' is an inherited accessor property
     without a get function (8.12.9 step 1)
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
         var proto = {};
         Object.defineProperty(proto, "foo", {
             set: function () { },
@@ -23,6 +21,6 @@ function testcase() {
         Object.defineProperty(obj, "foo", {
             configurable: true
         });
-        return obj.hasOwnProperty("foo") && typeof obj.foo === "undefined";
-    }
-runTestCase(testcase);
+
+assert(obj.hasOwnProperty("foo"), 'obj.hasOwnProperty("foo") !== true');
+assert.sameValue(typeof obj.foo, "undefined", 'typeof obj.foo');
diff --git a/test/built-ins/Object/defineProperty/15.2.3.6-4-325-1.js b/test/built-ins/Object/defineProperty/15.2.3.6-4-325-1.js
index 08e607bb4915ebbc3dff91799eee3f399ad0115b..e91a4651ce5275fd098009f3bc7002f5d3978be4 100644
--- a/test/built-ins/Object/defineProperty/15.2.3.6-4-325-1.js
+++ b/test/built-ins/Object/defineProperty/15.2.3.6-4-325-1.js
@@ -9,10 +9,8 @@ description: >
     [[ParameterMap]] of 'O', test 'name' is deleted if 'name' is
     configurable and 'desc' is accessor descriptor (10.6
     [[DefineOwnProperty]] step 5.a.i)
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
         var argObj = (function (a, b, c) { return arguments; })(1, 2, 3);
         var accessed = false;
 
@@ -23,6 +21,5 @@ function testcase() {
             }
         });
 
-        return argObj[0] === 12 && accessed;
-    }
-runTestCase(testcase);
+assert.sameValue(argObj[0], 12, 'argObj[0]');
+assert(accessed, 'accessed !== true');
diff --git a/test/built-ins/Object/defineProperty/15.2.3.6-4-325.js b/test/built-ins/Object/defineProperty/15.2.3.6-4-325.js
index 5c32e40cc450d31fcbe90278203de5a54db70955..b0204f081fd57d73db4bc3b0909961aaa90d8a58 100644
--- a/test/built-ins/Object/defineProperty/15.2.3.6-4-325.js
+++ b/test/built-ins/Object/defineProperty/15.2.3.6-4-325.js
@@ -8,10 +8,8 @@ description: >
     property of [[ParameterMap]] of 'O', test 'name' is deleted if
     'name' is configurable and 'desc' is accessor descriptor (10.6
     [[DefineOwnProperty]] step 5.a.i)
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
         var argObj = (function () { return arguments; })(1, 2, 3);
         var accessed = false;
 
@@ -22,6 +20,5 @@ function testcase() {
             }
         });
 
-        return argObj[0] === 12 && accessed;
-    }
-runTestCase(testcase);
+assert.sameValue(argObj[0], 12, 'argObj[0]');
+assert(accessed, 'accessed !== true');
diff --git a/test/built-ins/Object/defineProperty/15.2.3.6-4-326.js b/test/built-ins/Object/defineProperty/15.2.3.6-4-326.js
index 464a6ead9741fa2483445bb00fe3d29add8aa7a4..4ec0121f36d45d84fdf6a02404f7e0d41543625f 100644
--- a/test/built-ins/Object/defineProperty/15.2.3.6-4-326.js
+++ b/test/built-ins/Object/defineProperty/15.2.3.6-4-326.js
@@ -6,10 +6,8 @@ es5id: 15.2.3.6-4-326
 description: >
     ES5 Attributes - property ([[Writable]] is true, [[Enumerable]] is
     true, [[Configurable]] is true) is writable
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
         var obj = {};
 
         Object.defineProperty(obj, "prop", {
@@ -21,6 +19,5 @@ function testcase() {
         var propertyDefineCorrect = (obj.prop === 2010);
         obj.prop = 1001;
 
-        return propertyDefineCorrect && obj.prop === 1001;
-    }
-runTestCase(testcase);
+assert(propertyDefineCorrect, 'propertyDefineCorrect !== true');
+assert.sameValue(obj.prop, 1001, 'obj.prop');
diff --git a/test/built-ins/Object/defineProperty/15.2.3.6-4-328.js b/test/built-ins/Object/defineProperty/15.2.3.6-4-328.js
index 5d8f24047cce31e61dfecd879215d00c3b6afdc0..70c4b266935ad7fc09371185e172743eb45635a3 100644
--- a/test/built-ins/Object/defineProperty/15.2.3.6-4-328.js
+++ b/test/built-ins/Object/defineProperty/15.2.3.6-4-328.js
@@ -6,10 +6,8 @@ es5id: 15.2.3.6-4-328
 description: >
     ES5 Attributes - property ([[Writable]] is true, [[Enumerable]] is
     true, [[Configurable]] is true) is deletable
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
         var obj = {};
 
         Object.defineProperty(obj, "prop", {
@@ -21,6 +19,6 @@ function testcase() {
         var beforeDelete = obj.hasOwnProperty("prop");
         delete obj.prop;
         var afterDelete = obj.hasOwnProperty("prop");
-        return beforeDelete && !afterDelete;
-    }
-runTestCase(testcase);
+
+assert(beforeDelete, 'beforeDelete !== true');
+assert.sameValue(afterDelete, false, 'afterDelete');
diff --git a/test/built-ins/Object/defineProperty/15.2.3.6-4-329.js b/test/built-ins/Object/defineProperty/15.2.3.6-4-329.js
index f9ea888a49aa041a6d9d0a21bd8adbdc2af4d9cc..b184812e7e1c668e73d68849a36fe3ce1237e4e6 100644
--- a/test/built-ins/Object/defineProperty/15.2.3.6-4-329.js
+++ b/test/built-ins/Object/defineProperty/15.2.3.6-4-329.js
@@ -7,10 +7,8 @@ description: >
     ES5 Attributes - success to update [[Writable]] attribute of data
     property ([[Writable]] is true, [[Enumerable]] is true,
     [[Configurable]] is true) to different value
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
         var obj = {};
 
         Object.defineProperty(obj, "prop", {
@@ -27,6 +25,7 @@ function testcase() {
         });
         var desc2 = Object.getOwnPropertyDescriptor(obj, "prop");
 
-        return propertyDefineCorrect && desc1.writable === true && obj.prop === 2010 && desc2.writable === false;
-    }
-runTestCase(testcase);
+assert(propertyDefineCorrect, 'propertyDefineCorrect !== true');
+assert.sameValue(desc1.writable, true, 'desc1.writable');
+assert.sameValue(obj.prop, 2010, 'obj.prop');
+assert.sameValue(desc2.writable, false, 'desc2.writable');
diff --git a/test/built-ins/Object/defineProperty/15.2.3.6-4-330.js b/test/built-ins/Object/defineProperty/15.2.3.6-4-330.js
index 7d552757d25ef3a4214f1ad768bb87e0f6159b77..98ef3f69fadadc7dc5964ea55f83122d2f71e735 100644
--- a/test/built-ins/Object/defineProperty/15.2.3.6-4-330.js
+++ b/test/built-ins/Object/defineProperty/15.2.3.6-4-330.js
@@ -7,10 +7,8 @@ description: >
     ES5 Attributes - success to update [[enumerable]] attribute of
     data property ([[Writable]] is true, [[Enumerable]] is true,
     [[Configurable]] is true) to different value
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
         var obj = {};
 
         Object.defineProperty(obj, "prop", {
@@ -27,6 +25,7 @@ function testcase() {
         });
         var desc2 = Object.getOwnPropertyDescriptor(obj, "prop");
 
-        return propertyDefineCorrect && desc1.enumerable === true && obj.prop === 2010 && desc2.enumerable === false;
-    }
-runTestCase(testcase);
+assert(propertyDefineCorrect, 'propertyDefineCorrect !== true');
+assert.sameValue(desc1.enumerable, true, 'desc1.enumerable');
+assert.sameValue(obj.prop, 2010, 'obj.prop');
+assert.sameValue(desc2.enumerable, false, 'desc2.enumerable');
diff --git a/test/built-ins/Object/defineProperty/15.2.3.6-4-331.js b/test/built-ins/Object/defineProperty/15.2.3.6-4-331.js
index 058e2f1996d8a6fd7e6a8e81da36d4839ede25a9..86300a83e5bc9bd27bd333f53eb4656bef2566cb 100644
--- a/test/built-ins/Object/defineProperty/15.2.3.6-4-331.js
+++ b/test/built-ins/Object/defineProperty/15.2.3.6-4-331.js
@@ -7,10 +7,8 @@ description: >
     ES5 Attributes - success to update [[Configurable]] attribute of
     data property ([[Writable]] is true, [[Enumerable]] is true,
     [[Configurable]] is true) to different value
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
         var obj = {};
 
         Object.defineProperty(obj, "prop", {
@@ -27,6 +25,7 @@ function testcase() {
         });
         var desc2 = Object.getOwnPropertyDescriptor(obj, "prop");
 
-        return propertyDefineCorrect && desc1.configurable === true && obj.prop === 2010 && desc2.configurable === false;
-    }
-runTestCase(testcase);
+assert(propertyDefineCorrect, 'propertyDefineCorrect !== true');
+assert.sameValue(desc1.configurable, true, 'desc1.configurable');
+assert.sameValue(obj.prop, 2010, 'obj.prop');
+assert.sameValue(desc2.configurable, false, 'desc2.configurable');
diff --git a/test/built-ins/Object/defineProperty/15.2.3.6-4-332.js b/test/built-ins/Object/defineProperty/15.2.3.6-4-332.js
index 9cb151d78ef0ce388d76a681bc833a5e2db6dca3..80b01079f0ffae3e056c7e6268f378d34d5c47bb 100644
--- a/test/built-ins/Object/defineProperty/15.2.3.6-4-332.js
+++ b/test/built-ins/Object/defineProperty/15.2.3.6-4-332.js
@@ -7,10 +7,8 @@ description: >
     ES5 Attributes - success to update the data property ([[Writable]]
     is true, [[Enumerable]] is true, [[Configurable]] is true) to an
     accessor property
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
         var obj = {};
 
         Object.defineProperty(obj, "prop", {
@@ -29,6 +27,5 @@ function testcase() {
         });
         var desc2 = Object.getOwnPropertyDescriptor(obj, "prop");
 
-        return desc1.hasOwnProperty("value") && desc2.get === getFunc;
-    }
-runTestCase(testcase);
+assert(desc1.hasOwnProperty("value"), 'desc1.hasOwnProperty("value") !== true');
+assert.sameValue(desc2.get, getFunc, 'desc2.get');
diff --git a/test/built-ins/Object/defineProperty/15.2.3.6-4-333-10.js b/test/built-ins/Object/defineProperty/15.2.3.6-4-333-10.js
index b59c4120518ff05cbfca4eaad4bda292db2e0432..226f17c35fafbcf2ad5271d47bcedc7a7a1d8903 100644
--- a/test/built-ins/Object/defineProperty/15.2.3.6-4-333-10.js
+++ b/test/built-ins/Object/defineProperty/15.2.3.6-4-333-10.js
@@ -7,10 +7,8 @@ description: >
     ES5 Attributes - indexed data property 'P' with attributes
     [[Writable]]: true, [[Enumerable]]: true, [[Configurable]]: false
     is writable using simple assignment, 'O' is an Arguments object
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
         var obj = (function () {
             return arguments;
         }());
@@ -24,6 +22,5 @@ function testcase() {
         var verifyValue = (obj[0] === 2010);
         obj[0] = 1001;
 
-        return verifyValue && obj[0] === 1001;
-    }
-runTestCase(testcase);
+assert(verifyValue, 'verifyValue !== true');
+assert.sameValue(obj[0], 1001, 'obj[0]');
diff --git a/test/built-ins/Object/defineProperty/15.2.3.6-4-333-11.js b/test/built-ins/Object/defineProperty/15.2.3.6-4-333-11.js
index 5d27bfcd515ec8b2c6bdf83a78accb943ad26831..e8a45d3f68baf656b00a9428917ed71cd1e12000 100644
--- a/test/built-ins/Object/defineProperty/15.2.3.6-4-333-11.js
+++ b/test/built-ins/Object/defineProperty/15.2.3.6-4-333-11.js
@@ -7,10 +7,8 @@ description: >
     ES5 Attributes - indexed property 'P' with attributes
     [[Writable]]: true, [[Enumerable]]: true, [[Configurable]]: false
     is writable using simple assignment, 'O' is an Arguments object
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
         var obj = (function (x) {
             return arguments;
         }(1001));
@@ -23,6 +21,4 @@ function testcase() {
         });
         var verifyValue = (obj[0] === 2010);
 
-        return verifyValue;
-    }
-runTestCase(testcase);
+assert(verifyValue, 'verifyValue !== true');
diff --git a/test/built-ins/Object/defineProperty/15.2.3.6-4-333-4.js b/test/built-ins/Object/defineProperty/15.2.3.6-4-333-4.js
index bd07a4bfcc7e05845d0f0abff6a8cd21dc5b7548..1779e740bb25cee804b23007ce319b0813a87e94 100644
--- a/test/built-ins/Object/defineProperty/15.2.3.6-4-333-4.js
+++ b/test/built-ins/Object/defineProperty/15.2.3.6-4-333-4.js
@@ -7,10 +7,8 @@ description: >
     Indexed property 'P' with attributes [[Writable]]: true,
     [[Enumerable]]:true, [[Configurable]]:false is writable using
     simple assignment, 'A' is an Array Object
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
         var obj = [];
 
         Object.defineProperty(obj, "0", {
@@ -22,6 +20,5 @@ function testcase() {
         var verifyValue = (obj[0] === 2010);
         obj[0] = 1001;
 
-        return verifyValue && obj[0] === 1001;
-    }
-runTestCase(testcase);
+assert(verifyValue, 'verifyValue !== true');
+assert.sameValue(obj[0], 1001, 'obj[0]');
diff --git a/test/built-ins/Object/defineProperty/15.2.3.6-4-333-5.js b/test/built-ins/Object/defineProperty/15.2.3.6-4-333-5.js
index 8dbf20a18c159cd006811e1ce64e0801a4ea702c..cb4f8fa5efb3265454019669ba8a5814de4bb723 100644
--- a/test/built-ins/Object/defineProperty/15.2.3.6-4-333-5.js
+++ b/test/built-ins/Object/defineProperty/15.2.3.6-4-333-5.js
@@ -7,10 +7,8 @@ description: >
     ES5 Attributes - named data property 'P' with attributes
     [[Writable]]: true, [[Enumerable]]: true, [[Configurable]]: false
     is writable using simple assignment, 'O' is an Arguments object
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
         var obj = (function () {
             return arguments;
         }());
@@ -24,6 +22,5 @@ function testcase() {
         var verifyValue = (obj.prop === 2010);
         obj.prop = 1001;
 
-        return verifyValue && obj.prop === 1001;
-    }
-runTestCase(testcase);
+assert(verifyValue, 'verifyValue !== true');
+assert.sameValue(obj.prop, 1001, 'obj.prop');
diff --git a/test/built-ins/Object/defineProperty/15.2.3.6-4-333-9.js b/test/built-ins/Object/defineProperty/15.2.3.6-4-333-9.js
index 94a0c67d28c3a74a1ab6c0fe43ef2530d51b18d8..de964513d2861f77a5adb9faf58fd340160e116e 100644
--- a/test/built-ins/Object/defineProperty/15.2.3.6-4-333-9.js
+++ b/test/built-ins/Object/defineProperty/15.2.3.6-4-333-9.js
@@ -7,10 +7,8 @@ description: >
     Object.defineProperty - Named property 'P' with attributes
     [[Writable]]: true, [[Enumerable]]:true, [[Configurable]]:false is
     writable using simple assignment, 'A' is an Array Object
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
         var obj = [];
 
         Object.defineProperty(obj, "prop", {
@@ -22,6 +20,5 @@ function testcase() {
         var verifyValue = (obj.prop === 2010);
         obj.prop = 1001;
 
-        return verifyValue && obj.prop === 1001;
-    }
-runTestCase(testcase);
+assert(verifyValue, 'verifyValue !== true');
+assert.sameValue(obj.prop, 1001, 'obj.prop');
diff --git a/test/built-ins/Object/defineProperty/15.2.3.6-4-333.js b/test/built-ins/Object/defineProperty/15.2.3.6-4-333.js
index 01f827eac0a553d1b01530bfc5edc2874291c083..fc22ccde71e2c7cdadf247f17c8d5b032f84ced1 100644
--- a/test/built-ins/Object/defineProperty/15.2.3.6-4-333.js
+++ b/test/built-ins/Object/defineProperty/15.2.3.6-4-333.js
@@ -6,10 +6,8 @@ es5id: 15.2.3.6-4-333
 description: >
     ES5 Attributes - property ([[Writable]] is true, [[Enumerable]] is
     true, [[Configurable]] is false) is writable
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
         var obj = {};
 
         Object.defineProperty(obj, "prop", {
@@ -21,6 +19,5 @@ function testcase() {
         var propertyDefineCorrect = (obj.prop === 2010);
         obj.prop = 1001;
 
-        return propertyDefineCorrect && obj.prop === 1001;
-    }
-runTestCase(testcase);
+assert(propertyDefineCorrect, 'propertyDefineCorrect !== true');
+assert.sameValue(obj.prop, 1001, 'obj.prop');
diff --git a/test/built-ins/Object/defineProperty/15.2.3.6-4-336.js b/test/built-ins/Object/defineProperty/15.2.3.6-4-336.js
index 7ac3e195ac71d78e40d24ecfc6c3d5894e4251a7..61256748e551543e4ef6308e8d70f7aa1c4d1636 100644
--- a/test/built-ins/Object/defineProperty/15.2.3.6-4-336.js
+++ b/test/built-ins/Object/defineProperty/15.2.3.6-4-336.js
@@ -7,10 +7,8 @@ description: >
     ES5 Attributes - Success to update [[Writable]] attribute of data
     property ([[Writable]] is true, [[Enumerable]] is true,
     [[Configurable]] is false) to different value
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
         var obj = {};
 
         Object.defineProperty(obj, "prop", {
@@ -27,6 +25,7 @@ function testcase() {
         });
         var desc2 = Object.getOwnPropertyDescriptor(obj, "prop");
 
-        return propertyDefineCorrect && desc1.writable === true && obj.prop === 2010 && desc2.writable === false;
-    }
-runTestCase(testcase);
+assert(propertyDefineCorrect, 'propertyDefineCorrect !== true');
+assert.sameValue(desc1.writable, true, 'desc1.writable');
+assert.sameValue(obj.prop, 2010, 'obj.prop');
+assert.sameValue(desc2.writable, false, 'desc2.writable');
diff --git a/test/built-ins/Object/defineProperty/15.2.3.6-4-340.js b/test/built-ins/Object/defineProperty/15.2.3.6-4-340.js
index 8067fca02275dde99c42b2043bc31f5ee072a015..d54903654ef2c54cd2bdd5a0e90efb25d39da068 100644
--- a/test/built-ins/Object/defineProperty/15.2.3.6-4-340.js
+++ b/test/built-ins/Object/defineProperty/15.2.3.6-4-340.js
@@ -6,10 +6,8 @@ es5id: 15.2.3.6-4-340
 description: >
     ES5 Attributes - property ([[Writable]] is true, [[Enumerable]] is
     false, [[Configurable]] is true) is writable
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
         var obj = {};
 
         Object.defineProperty(obj, "prop", {
@@ -21,6 +19,5 @@ function testcase() {
         var propertyDefineCorrect = (obj.prop === 2010);
         obj.prop = 1001;
 
-        return propertyDefineCorrect && obj.prop === 1001;
-    }
-runTestCase(testcase);
+assert(propertyDefineCorrect, 'propertyDefineCorrect !== true');
+assert.sameValue(obj.prop, 1001, 'obj.prop');
diff --git a/test/built-ins/Object/defineProperty/15.2.3.6-4-342.js b/test/built-ins/Object/defineProperty/15.2.3.6-4-342.js
index 271ad2ed2b51553bc5aec6ac51e90e9dcd5200ba..3ccac9871975882df822fef5101d026a4f4deeee 100644
--- a/test/built-ins/Object/defineProperty/15.2.3.6-4-342.js
+++ b/test/built-ins/Object/defineProperty/15.2.3.6-4-342.js
@@ -6,10 +6,8 @@ es5id: 15.2.3.6-4-342
 description: >
     ES5 Attributes - property ([[Writable]] is true, [[Enumerable]] is
     false, [[Configurable]] is true) is deletable
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
         var obj = {};
 
         Object.defineProperty(obj, "prop", {
@@ -21,6 +19,6 @@ function testcase() {
         var beforeDelete = obj.hasOwnProperty("prop");
         delete obj.prop;
         var afterDelete = obj.hasOwnProperty("prop");
-        return beforeDelete && !afterDelete;
-    }
-runTestCase(testcase);
+
+assert(beforeDelete, 'beforeDelete !== true');
+assert.sameValue(afterDelete, false, 'afterDelete');
diff --git a/test/built-ins/Object/defineProperty/15.2.3.6-4-343.js b/test/built-ins/Object/defineProperty/15.2.3.6-4-343.js
index c18a642edd72d4e5988e3025dae6d9e8b76ba540..7d9169e97878e30fc5e370b9588140134a6f0b50 100644
--- a/test/built-ins/Object/defineProperty/15.2.3.6-4-343.js
+++ b/test/built-ins/Object/defineProperty/15.2.3.6-4-343.js
@@ -7,10 +7,8 @@ description: >
     ES5 Attributes - success to update [[Writable]] attribute of data
     property ([[Writable]] is true, [[Enumerable]] is false,
     [[Configurable]] is true) to different value
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
         var obj = {};
 
         Object.defineProperty(obj, "prop", {
@@ -27,6 +25,7 @@ function testcase() {
         });
         var desc2 = Object.getOwnPropertyDescriptor(obj, "prop");
 
-        return propertyDefineCorrect && desc1.writable === true && obj.prop === 2010 && desc2.writable === false;
-    }
-runTestCase(testcase);
+assert(propertyDefineCorrect, 'propertyDefineCorrect !== true');
+assert.sameValue(desc1.writable, true, 'desc1.writable');
+assert.sameValue(obj.prop, 2010, 'obj.prop');
+assert.sameValue(desc2.writable, false, 'desc2.writable');
diff --git a/test/built-ins/Object/defineProperty/15.2.3.6-4-344.js b/test/built-ins/Object/defineProperty/15.2.3.6-4-344.js
index 60013370eddb53c3a81c78e614b3891a75826316..6e61cad2d5743ea01e5d6699c38773fcbb52d529 100644
--- a/test/built-ins/Object/defineProperty/15.2.3.6-4-344.js
+++ b/test/built-ins/Object/defineProperty/15.2.3.6-4-344.js
@@ -7,10 +7,8 @@ description: >
     ES5 Attributes - success to update [[Enumerable]] attribute of
     data property ([[Writable]] is true, [[Enumerable]] is false,
     [[Configurable]] is true) to different value
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
         var obj = {};
 
         Object.defineProperty(obj, "prop", {
@@ -27,6 +25,7 @@ function testcase() {
         });
         var desc2 = Object.getOwnPropertyDescriptor(obj, "prop");
 
-        return propertyDefineCorrect && desc1.enumerable === false && obj.prop === 2010 && desc2.enumerable === true;
-    }
-runTestCase(testcase);
+assert(propertyDefineCorrect, 'propertyDefineCorrect !== true');
+assert.sameValue(desc1.enumerable, false, 'desc1.enumerable');
+assert.sameValue(obj.prop, 2010, 'obj.prop');
+assert.sameValue(desc2.enumerable, true, 'desc2.enumerable');
diff --git a/test/built-ins/Object/defineProperty/15.2.3.6-4-345.js b/test/built-ins/Object/defineProperty/15.2.3.6-4-345.js
index 5e66b6160b60611ec13b635a21bb37e44745c857..8909632d9b305cc835b56a5eb41a5b819f5c77aa 100644
--- a/test/built-ins/Object/defineProperty/15.2.3.6-4-345.js
+++ b/test/built-ins/Object/defineProperty/15.2.3.6-4-345.js
@@ -7,10 +7,8 @@ description: >
     ES5 Attributes - success to update [[Configurable]] attribute of
     data property ([[Writable]] is true, [[Enumerable]] is false,
     [[Configurable]] is true) to different value
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
         var obj = {};
 
         Object.defineProperty(obj, "prop", {
@@ -27,6 +25,7 @@ function testcase() {
         });
         var desc2 = Object.getOwnPropertyDescriptor(obj, "prop");
 
-        return propertyDefineCorrect && desc1.configurable === true && obj.prop === 2010 && desc2.configurable === false;
-    }
-runTestCase(testcase);
+assert(propertyDefineCorrect, 'propertyDefineCorrect !== true');
+assert.sameValue(desc1.configurable, true, 'desc1.configurable');
+assert.sameValue(obj.prop, 2010, 'obj.prop');
+assert.sameValue(desc2.configurable, false, 'desc2.configurable');
diff --git a/test/built-ins/Object/defineProperty/15.2.3.6-4-346.js b/test/built-ins/Object/defineProperty/15.2.3.6-4-346.js
index 7f1ef0421bc81387114702e9b522b8b6a8f89ae1..ecd43d652c6dc7095579ef31379fbee50b2ea530 100644
--- a/test/built-ins/Object/defineProperty/15.2.3.6-4-346.js
+++ b/test/built-ins/Object/defineProperty/15.2.3.6-4-346.js
@@ -7,10 +7,8 @@ description: >
     ES5 Attributes - success to update the data property ([[Writable]]
     is true, [[Enumerable]] is false, [[Configurable]] is true) to an
     accessor property
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
         var obj = {};
 
         Object.defineProperty(obj, "prop", {
@@ -29,6 +27,5 @@ function testcase() {
         });
         var desc2 = Object.getOwnPropertyDescriptor(obj, "prop");
 
-        return desc1.hasOwnProperty("value") && desc2.hasOwnProperty("get");
-    }
-runTestCase(testcase);
+assert(desc1.hasOwnProperty("value"), 'desc1.hasOwnProperty("value") !== true');
+assert(desc2.hasOwnProperty("get"), 'desc2.hasOwnProperty("get") !== true');
diff --git a/test/built-ins/Object/defineProperty/15.2.3.6-4-347.js b/test/built-ins/Object/defineProperty/15.2.3.6-4-347.js
index 339697f368c0e95ff9bbbbf171f12b90e2a3eadd..dcefdd01178433007d15c750d532fe64b4d555aa 100644
--- a/test/built-ins/Object/defineProperty/15.2.3.6-4-347.js
+++ b/test/built-ins/Object/defineProperty/15.2.3.6-4-347.js
@@ -6,10 +6,8 @@ es5id: 15.2.3.6-4-347
 description: >
     ES5 Attributes - property ([[Writable]] is true, [[Enumerable]] is
     false, [[Configurable]] is false) is writable
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
         var obj = {};
 
         Object.defineProperty(obj, "prop", {
@@ -21,6 +19,5 @@ function testcase() {
         var propertyDefineCorrect = (obj.prop === 2010);
         obj.prop = 1001;
 
-        return propertyDefineCorrect && obj.prop === 1001;
-    }
-runTestCase(testcase);
+assert(propertyDefineCorrect, 'propertyDefineCorrect !== true');
+assert.sameValue(obj.prop, 1001, 'obj.prop');
diff --git a/test/built-ins/Object/defineProperty/15.2.3.6-4-350.js b/test/built-ins/Object/defineProperty/15.2.3.6-4-350.js
index 7a80aa8c76b437e736e9c556b5275c9edceff8b7..ad0446494d9cc8dfb0af9d0d503c0b9904276126 100644
--- a/test/built-ins/Object/defineProperty/15.2.3.6-4-350.js
+++ b/test/built-ins/Object/defineProperty/15.2.3.6-4-350.js
@@ -7,10 +7,8 @@ description: >
     ES5 Attributes - fail to update [[Writable]] attribute of data
     property ([[Writable]] is true, [[Enumerable]] is false,
     [[Configurable]] is false) to different value
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
         var obj = {};
 
         Object.defineProperty(obj, "prop", {
@@ -27,6 +25,7 @@ function testcase() {
         });
         var desc2 = Object.getOwnPropertyDescriptor(obj, "prop");
 
-        return propertyDefineCorrect && desc1.writable === true && obj.prop === 2010 && desc2.writable === false;
-    }
-runTestCase(testcase);
+assert(propertyDefineCorrect, 'propertyDefineCorrect !== true');
+assert.sameValue(desc1.writable, true, 'desc1.writable');
+assert.sameValue(obj.prop, 2010, 'obj.prop');
+assert.sameValue(desc2.writable, false, 'desc2.writable');
diff --git a/test/built-ins/Object/defineProperty/15.2.3.6-4-356.js b/test/built-ins/Object/defineProperty/15.2.3.6-4-356.js
index c9d8d5b40a8bfd858fc034016b620a892daf0418..c31bf7e1b6e9023a01c0a4d93c3e6ba91b4c0568 100644
--- a/test/built-ins/Object/defineProperty/15.2.3.6-4-356.js
+++ b/test/built-ins/Object/defineProperty/15.2.3.6-4-356.js
@@ -6,10 +6,8 @@ es5id: 15.2.3.6-4-356
 description: >
     ES5 Attributes - property ([[Writable]] is false, [[Enumerable]]
     is true, [[Configurable]] is true) is deletable
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
         var obj = {};
 
         Object.defineProperty(obj, "prop", {
@@ -21,6 +19,6 @@ function testcase() {
         var beforeDelete = obj.hasOwnProperty("prop");
         delete obj.prop;
         var afterDelete = obj.hasOwnProperty("prop");
-        return beforeDelete && !afterDelete;
-    }
-runTestCase(testcase);
+
+assert(beforeDelete, 'beforeDelete !== true');
+assert.sameValue(afterDelete, false, 'afterDelete');
diff --git a/test/built-ins/Object/defineProperty/15.2.3.6-4-357.js b/test/built-ins/Object/defineProperty/15.2.3.6-4-357.js
index 2af6a6a6ce163283dc20fbc5daf077206fc9c1e0..7af95b48c26f5ca2a2849a83ac7099300bc8bbf5 100644
--- a/test/built-ins/Object/defineProperty/15.2.3.6-4-357.js
+++ b/test/built-ins/Object/defineProperty/15.2.3.6-4-357.js
@@ -7,10 +7,8 @@ description: >
     ES5 Attributes - success to update [[Writable]] attribute of data
     property ([[Writable]] is false, [[Enumerable]] is true,
     [[Configurable]] is true) to different value
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
         var obj = {};
 
         Object.defineProperty(obj, "prop", {
@@ -27,6 +25,7 @@ function testcase() {
         });
         var desc2 = Object.getOwnPropertyDescriptor(obj, "prop");
 
-        return propertyDefineCorrect && desc1.writable === false && obj.prop === 2010 && desc2.writable === true;
-    }
-runTestCase(testcase);
+assert(propertyDefineCorrect, 'propertyDefineCorrect !== true');
+assert.sameValue(desc1.writable, false, 'desc1.writable');
+assert.sameValue(obj.prop, 2010, 'obj.prop');
+assert.sameValue(desc2.writable, true, 'desc2.writable');
diff --git a/test/built-ins/Object/defineProperty/15.2.3.6-4-358.js b/test/built-ins/Object/defineProperty/15.2.3.6-4-358.js
index 2d0ba0a8eaff91187c2d24df54d498c5dbf91405..e475c264e1b8160b7e5ceefe910ea9291dc5b4e3 100644
--- a/test/built-ins/Object/defineProperty/15.2.3.6-4-358.js
+++ b/test/built-ins/Object/defineProperty/15.2.3.6-4-358.js
@@ -7,10 +7,8 @@ description: >
     ES5 Attributes - success to update [[Enumerable]] attribute of
     data property ([[Writable]] is false, [[Enumerable]] is true,
     [[Configurable]] is true) to different value
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
         var obj = {};
 
         Object.defineProperty(obj, "prop", {
@@ -27,6 +25,7 @@ function testcase() {
         });
         var desc2 = Object.getOwnPropertyDescriptor(obj, "prop");
 
-        return propertyDefineCorrect && desc1.enumerable === true && obj.prop === 2010 && desc2.enumerable === false;
-    }
-runTestCase(testcase);
+assert(propertyDefineCorrect, 'propertyDefineCorrect !== true');
+assert.sameValue(desc1.enumerable, true, 'desc1.enumerable');
+assert.sameValue(obj.prop, 2010, 'obj.prop');
+assert.sameValue(desc2.enumerable, false, 'desc2.enumerable');
diff --git a/test/built-ins/Object/defineProperty/15.2.3.6-4-359.js b/test/built-ins/Object/defineProperty/15.2.3.6-4-359.js
index 935276fa5a6a1c514a672b04dc3ff3229c130fb5..cae4f4c7fd6f6877900d15783fabc1966f5d6f19 100644
--- a/test/built-ins/Object/defineProperty/15.2.3.6-4-359.js
+++ b/test/built-ins/Object/defineProperty/15.2.3.6-4-359.js
@@ -7,10 +7,8 @@ description: >
     ES5 Attributes - success to update [[Configurable]] attribute of
     data property ([[Writable]] is false, [[Enumerable]] is true,
     [[Configurable]] is true) to different value
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
         var obj = {};
 
         Object.defineProperty(obj, "prop", {
@@ -27,6 +25,7 @@ function testcase() {
         });
         var desc2 = Object.getOwnPropertyDescriptor(obj, "prop");
 
-        return propertyDefineCorrect && desc1.configurable === true && obj.prop === 2010 && desc2.configurable === false;
-    }
-runTestCase(testcase);
+assert(propertyDefineCorrect, 'propertyDefineCorrect !== true');
+assert.sameValue(desc1.configurable, true, 'desc1.configurable');
+assert.sameValue(obj.prop, 2010, 'obj.prop');
+assert.sameValue(desc2.configurable, false, 'desc2.configurable');
diff --git a/test/built-ins/Object/defineProperty/15.2.3.6-4-360-1.js b/test/built-ins/Object/defineProperty/15.2.3.6-4-360-1.js
index 40e8c8e0fd45edb8de42620bd2ef4f75074f5ec5..68d77e7cc4d1adc6f3b3cdcf16946083eeb040a9 100644
--- a/test/built-ins/Object/defineProperty/15.2.3.6-4-360-1.js
+++ b/test/built-ins/Object/defineProperty/15.2.3.6-4-360-1.js
@@ -8,10 +8,8 @@ description: >
     attributes are [[Writable]]: false, [[Enumerable]]: true,
     [[Configurable]]: true to an accessor property, 'A' is an Array
     object (8.12.9 - step 9.b.i)
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
         var obj = [];
 
         Object.defineProperty(obj, "0", {
@@ -30,8 +28,10 @@ function testcase() {
         });
         var desc2 = Object.getOwnPropertyDescriptor(obj, "0");
 
-        return desc1.hasOwnProperty("value") && desc2.hasOwnProperty("get") &&
-            desc2.enumerable === true && desc2.configurable === true &&
-            obj[0] === 20 && typeof desc2.set === "undefined" && desc2.get === getFunc;
-    }
-runTestCase(testcase);
+assert(desc1.hasOwnProperty("value"), 'desc1.hasOwnProperty("value") !== true');
+assert(desc2.hasOwnProperty("get"), 'desc2.hasOwnProperty("get") !== true');
+assert.sameValue(desc2.enumerable, true, 'desc2.enumerable');
+assert.sameValue(desc2.configurable, true, 'desc2.configurable');
+assert.sameValue(obj[0], 20, 'obj[0]');
+assert.sameValue(typeof desc2.set, "undefined", 'typeof desc2.set');
+assert.sameValue(desc2.get, getFunc, 'desc2.get');
diff --git a/test/built-ins/Object/defineProperty/15.2.3.6-4-360-2.js b/test/built-ins/Object/defineProperty/15.2.3.6-4-360-2.js
index 36a28a976dc371f43578c3ec6c4ffb0756e1d76f..c7cf7e7f286749e42d7468b794bb89828ec422c0 100644
--- a/test/built-ins/Object/defineProperty/15.2.3.6-4-360-2.js
+++ b/test/built-ins/Object/defineProperty/15.2.3.6-4-360-2.js
@@ -8,10 +8,8 @@ description: >
     [[Writable]]: false, [[Enumerable]]: true, [[Configurable]]: true
     to an accessor property, 'O' is an Arguments object (8.12.9 - step
     9.b.i)
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
         var obj = (function () {
             return arguments;
         }());
@@ -32,8 +30,10 @@ function testcase() {
         });
         var desc2 = Object.getOwnPropertyDescriptor(obj, "prop");
 
-        return desc1.hasOwnProperty("value") && desc2.hasOwnProperty("get") &&
-            desc2.enumerable === true && desc2.configurable === true &&
-            obj.prop === 20 && typeof desc2.set === "undefined" && desc2.get === getFunc;
-    }
-runTestCase(testcase);
+assert(desc1.hasOwnProperty("value"), 'desc1.hasOwnProperty("value") !== true');
+assert(desc2.hasOwnProperty("get"), 'desc2.hasOwnProperty("get") !== true');
+assert.sameValue(desc2.enumerable, true, 'desc2.enumerable');
+assert.sameValue(desc2.configurable, true, 'desc2.configurable');
+assert.sameValue(obj.prop, 20, 'obj.prop');
+assert.sameValue(typeof desc2.set, "undefined", 'typeof desc2.set');
+assert.sameValue(desc2.get, getFunc, 'desc2.get');
diff --git a/test/built-ins/Object/defineProperty/15.2.3.6-4-360-5.js b/test/built-ins/Object/defineProperty/15.2.3.6-4-360-5.js
index ecb2a47dbecfdff96f9ebb0428474ae6625638d3..29ab089dcef1bd3b8d8f281ad4d6f9a703d6f917 100644
--- a/test/built-ins/Object/defineProperty/15.2.3.6-4-360-5.js
+++ b/test/built-ins/Object/defineProperty/15.2.3.6-4-360-5.js
@@ -8,10 +8,8 @@ description: >
     are [[Writable]]: false, [[Enumerable]]: true, [[Configurable]]:
     true to an accessor property, 'A' is an Array object (8.12.9 -
     step 9.b.i)
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
         var obj = [];
 
         Object.defineProperty(obj, "prop", {
@@ -30,8 +28,10 @@ function testcase() {
         });
         var desc2 = Object.getOwnPropertyDescriptor(obj, "prop");
 
-        return desc1.hasOwnProperty("value") && desc2.hasOwnProperty("get") &&
-            desc2.enumerable === true && desc2.configurable === true &&
-            obj.prop === 20 && typeof desc2.set === "undefined" && desc2.get === getFunc;
-    }
-runTestCase(testcase);
+assert(desc1.hasOwnProperty("value"), 'desc1.hasOwnProperty("value") !== true');
+assert(desc2.hasOwnProperty("get"), 'desc2.hasOwnProperty("get") !== true');
+assert.sameValue(desc2.enumerable, true, 'desc2.enumerable');
+assert.sameValue(desc2.configurable, true, 'desc2.configurable');
+assert.sameValue(obj.prop, 20, 'obj.prop');
+assert.sameValue(typeof desc2.set, "undefined", 'typeof desc2.set');
+assert.sameValue(desc2.get, getFunc, 'desc2.get');
diff --git a/test/built-ins/Object/defineProperty/15.2.3.6-4-360-6.js b/test/built-ins/Object/defineProperty/15.2.3.6-4-360-6.js
index 0c9d0dc1639098bc319deefc474aa228d119b812..87d14d4fb14d6e8c38c1aacb8f8973216d10cf00 100644
--- a/test/built-ins/Object/defineProperty/15.2.3.6-4-360-6.js
+++ b/test/built-ins/Object/defineProperty/15.2.3.6-4-360-6.js
@@ -8,10 +8,8 @@ description: >
     attributes are [[Writable]]: false, [[Enumerable]]: true,
     [[Configurable]]: true to an accessor property, 'O' is an
     Arguments object (8.12.9 - step 9.b.i)
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
         var obj = (function () {
             return arguments;
         }());
@@ -32,8 +30,10 @@ function testcase() {
         });
         var desc2 = Object.getOwnPropertyDescriptor(obj, "0");
 
-        return desc1.hasOwnProperty("value") && desc2.hasOwnProperty("get") &&
-            desc2.enumerable === true && desc2.configurable === true &&
-            obj[0] === 20 && typeof desc2.set === "undefined" && desc2.get === getFunc;
-    }
-runTestCase(testcase);
+assert(desc1.hasOwnProperty("value"), 'desc1.hasOwnProperty("value") !== true');
+assert(desc2.hasOwnProperty("get"), 'desc2.hasOwnProperty("get") !== true');
+assert.sameValue(desc2.enumerable, true, 'desc2.enumerable');
+assert.sameValue(desc2.configurable, true, 'desc2.configurable');
+assert.sameValue(obj[0], 20, 'obj[0]');
+assert.sameValue(typeof desc2.set, "undefined", 'typeof desc2.set');
+assert.sameValue(desc2.get, getFunc, 'desc2.get');
diff --git a/test/built-ins/Object/defineProperty/15.2.3.6-4-360.js b/test/built-ins/Object/defineProperty/15.2.3.6-4-360.js
index 6df3b6d44f4d06294b1ce711dbcf4fcf449e5ce2..3e68d2ec7e77d630488189f8b6f971de6463da1d 100644
--- a/test/built-ins/Object/defineProperty/15.2.3.6-4-360.js
+++ b/test/built-ins/Object/defineProperty/15.2.3.6-4-360.js
@@ -7,10 +7,8 @@ description: >
     ES5 Attributes - success to update the data property ([[Writable]]
     is false, [[Enumerable]] is true, [[Configurable]] is true) to an
     accessor property
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
         var obj = {};
 
         Object.defineProperty(obj, "prop", {
@@ -29,6 +27,5 @@ function testcase() {
         });
         var desc2 = Object.getOwnPropertyDescriptor(obj, "prop");
 
-        return desc1.hasOwnProperty("value") && desc2.hasOwnProperty("get");
-    }
-runTestCase(testcase);
+assert(desc1.hasOwnProperty("value"), 'desc1.hasOwnProperty("value") !== true');
+assert(desc2.hasOwnProperty("get"), 'desc2.hasOwnProperty("get") !== true');
diff --git a/test/built-ins/Object/defineProperty/15.2.3.6-4-370.js b/test/built-ins/Object/defineProperty/15.2.3.6-4-370.js
index 9c02b500489d2562ff9cc1c90c94eb35d3051116..96e8bc9e2eda783078961c148417945c20a7d0de 100644
--- a/test/built-ins/Object/defineProperty/15.2.3.6-4-370.js
+++ b/test/built-ins/Object/defineProperty/15.2.3.6-4-370.js
@@ -6,10 +6,8 @@ es5id: 15.2.3.6-4-370
 description: >
     ES5 Attributes - property ([[Writable]] is false, [[Enumerable]]
     is false, [[Configurable]] is true) is deletable
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
         var obj = {};
 
         Object.defineProperty(obj, "prop", {
@@ -21,6 +19,6 @@ function testcase() {
         var beforeDelete = obj.hasOwnProperty("prop");
         delete obj.prop;
         var afterDelete = obj.hasOwnProperty("prop");
-        return beforeDelete && !afterDelete;
-    }
-runTestCase(testcase);
+
+assert(beforeDelete, 'beforeDelete !== true');
+assert.sameValue(afterDelete, false, 'afterDelete');
diff --git a/test/built-ins/Object/defineProperty/15.2.3.6-4-371.js b/test/built-ins/Object/defineProperty/15.2.3.6-4-371.js
index 14aff6bd39cd2f85fc2e5ec1ea9cd29d489a6496..ce74180fde8b30a39db6d57ce340d7c6e2ef802f 100644
--- a/test/built-ins/Object/defineProperty/15.2.3.6-4-371.js
+++ b/test/built-ins/Object/defineProperty/15.2.3.6-4-371.js
@@ -7,10 +7,8 @@ description: >
     ES5 Attributes - success to update [[Writable]] attribute of data
     property ([[Writable]] is false, [[Enumerable]] is false,
     [[Configurable]] is true) to different value
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
         var obj = {};
 
         Object.defineProperty(obj, "prop", {
@@ -27,6 +25,7 @@ function testcase() {
         });
         var desc2 = Object.getOwnPropertyDescriptor(obj, "prop");
 
-        return propertyDefineCorrect && desc1.writable === false && obj.prop === 2010 && desc2.writable === true;
-    }
-runTestCase(testcase);
+assert(propertyDefineCorrect, 'propertyDefineCorrect !== true');
+assert.sameValue(desc1.writable, false, 'desc1.writable');
+assert.sameValue(obj.prop, 2010, 'obj.prop');
+assert.sameValue(desc2.writable, true, 'desc2.writable');
diff --git a/test/built-ins/Object/defineProperty/15.2.3.6-4-372.js b/test/built-ins/Object/defineProperty/15.2.3.6-4-372.js
index f3b3bba74e83dfbbac2997652cf1c95bd3e04c5b..23d887263e91d503e97f00f653e2272003e3bda3 100644
--- a/test/built-ins/Object/defineProperty/15.2.3.6-4-372.js
+++ b/test/built-ins/Object/defineProperty/15.2.3.6-4-372.js
@@ -7,10 +7,8 @@ description: >
     ES5 Attributes - success to update [[Enumerable]] attribute of
     data property ([[Writable]] is false, [[Enumerable]] is false,
     [[Configurable]] is true) to different value
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
         var obj = {};
 
         Object.defineProperty(obj, "prop", {
@@ -27,6 +25,7 @@ function testcase() {
         });
         var desc2 = Object.getOwnPropertyDescriptor(obj, "prop");
 
-        return propertyDefineCorrect && desc1.enumerable === false && obj.prop === 2010 && desc2.enumerable === true;
-    }
-runTestCase(testcase);
+assert(propertyDefineCorrect, 'propertyDefineCorrect !== true');
+assert.sameValue(desc1.enumerable, false, 'desc1.enumerable');
+assert.sameValue(obj.prop, 2010, 'obj.prop');
+assert.sameValue(desc2.enumerable, true, 'desc2.enumerable');
diff --git a/test/built-ins/Object/defineProperty/15.2.3.6-4-373.js b/test/built-ins/Object/defineProperty/15.2.3.6-4-373.js
index 5a59c165733601b2b580f31e1b735d0220bb8222..7e32a7a11b402607447016fb0317e5dc4c3cb60e 100644
--- a/test/built-ins/Object/defineProperty/15.2.3.6-4-373.js
+++ b/test/built-ins/Object/defineProperty/15.2.3.6-4-373.js
@@ -7,10 +7,8 @@ description: >
     ES5 Attributes - success to update [[Configurable]] attribute of
     data property ([[Writable]] is false, [[Enumerable]] is false,
     [[Configurable]] is true) to different value
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
         var obj = {};
 
         Object.defineProperty(obj, "prop", {
@@ -27,6 +25,7 @@ function testcase() {
         });
         var desc2 = Object.getOwnPropertyDescriptor(obj, "prop");
 
-        return propertyDefineCorrect && desc1.configurable === true && obj.prop === 2010 && desc2.configurable === false;
-    }
-runTestCase(testcase);
+assert(propertyDefineCorrect, 'propertyDefineCorrect !== true');
+assert.sameValue(desc1.configurable, true, 'desc1.configurable');
+assert.sameValue(obj.prop, 2010, 'obj.prop');
+assert.sameValue(desc2.configurable, false, 'desc2.configurable');
diff --git a/test/built-ins/Object/defineProperty/15.2.3.6-4-374.js b/test/built-ins/Object/defineProperty/15.2.3.6-4-374.js
index 85ea01fb892de41a1f60b10fd38e218fb95d04fe..90e0d9d9f041f1cccb9e833f6a1c2c7ed1fd363b 100644
--- a/test/built-ins/Object/defineProperty/15.2.3.6-4-374.js
+++ b/test/built-ins/Object/defineProperty/15.2.3.6-4-374.js
@@ -7,10 +7,8 @@ description: >
     ES5 Attributes - success to update the data property ([[Writable]]
     is false, [[Enumerable]] is false, [[Configurable]] is true) to an
     accessor property
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
         var obj = {};
 
         Object.defineProperty(obj, "prop", {
@@ -28,6 +26,5 @@ function testcase() {
         });
         var desc2 = Object.getOwnPropertyDescriptor(obj, "prop");
 
-        return desc1.hasOwnProperty("value") && desc2.get === getFunc;
-    }
-runTestCase(testcase);
+assert(desc1.hasOwnProperty("value"), 'desc1.hasOwnProperty("value") !== true');
+assert.sameValue(desc2.get, getFunc, 'desc2.get');
diff --git a/test/built-ins/Object/defineProperty/15.2.3.6-4-382.js b/test/built-ins/Object/defineProperty/15.2.3.6-4-382.js
index 811b6c54b0c9f2d9c81e354dd9498bbd7919ea82..6a13ff50372871f7a20a5b288a3e5d8741444cd8 100644
--- a/test/built-ins/Object/defineProperty/15.2.3.6-4-382.js
+++ b/test/built-ins/Object/defineProperty/15.2.3.6-4-382.js
@@ -4,10 +4,8 @@
 /*---
 es5id: 15.2.3.6-4-382
 description: ES5 Attributes - [[Value]] attribute of data property is a number
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
         var obj = {};
 
         Object.defineProperty(obj, "prop", {
@@ -16,6 +14,5 @@ function testcase() {
 
         var desc = Object.getOwnPropertyDescriptor(obj, "prop");
 
-        return obj.prop === 1001 && desc.value === 1001;
-    }
-runTestCase(testcase);
+assert.sameValue(obj.prop, 1001, 'obj.prop');
+assert.sameValue(desc.value, 1001, 'desc.value');
diff --git a/test/built-ins/Object/defineProperty/15.2.3.6-4-383.js b/test/built-ins/Object/defineProperty/15.2.3.6-4-383.js
index f986cb4d93b0189a5ba3e97ee079a8a39a9b76ff..16e5e19d05784f52d907c270965d27a4d4e722cc 100644
--- a/test/built-ins/Object/defineProperty/15.2.3.6-4-383.js
+++ b/test/built-ins/Object/defineProperty/15.2.3.6-4-383.js
@@ -4,10 +4,8 @@
 /*---
 es5id: 15.2.3.6-4-383
 description: ES5 Attributes - [[Value]] attribute of data property is a string
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
         var obj = {};
 
         Object.defineProperty(obj, "prop", {
@@ -16,6 +14,5 @@ function testcase() {
 
         var desc = Object.getOwnPropertyDescriptor(obj, "prop");
 
-        return obj.prop === "ThisIsAString" && desc.value === "ThisIsAString";
-    }
-runTestCase(testcase);
+assert.sameValue(obj.prop, "ThisIsAString", 'obj.prop');
+assert.sameValue(desc.value, "ThisIsAString", 'desc.value');
diff --git a/test/built-ins/Object/defineProperty/15.2.3.6-4-384.js b/test/built-ins/Object/defineProperty/15.2.3.6-4-384.js
index b349dec25b562d35c1dbb0341b957eac128bbeb8..cf51444dd56c79bd124c50e5a26c8cd798128fbe 100644
--- a/test/built-ins/Object/defineProperty/15.2.3.6-4-384.js
+++ b/test/built-ins/Object/defineProperty/15.2.3.6-4-384.js
@@ -4,10 +4,8 @@
 /*---
 es5id: 15.2.3.6-4-384
 description: ES5 Attributes - [[Value]] attribute of data property is a boolean
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
         var obj = {};
 
         Object.defineProperty(obj, "prop", {
@@ -16,6 +14,5 @@ function testcase() {
 
         var desc = Object.getOwnPropertyDescriptor(obj, "prop");
 
-        return obj.prop === false && desc.value === false;
-    }
-runTestCase(testcase);
+assert.sameValue(obj.prop, false, 'obj.prop');
+assert.sameValue(desc.value, false, 'desc.value');
diff --git a/test/built-ins/Object/defineProperty/15.2.3.6-4-385.js b/test/built-ins/Object/defineProperty/15.2.3.6-4-385.js
index 008a6de7577cb7f569efb2456a97764ed1d1a490..397487f5c206eccbcccf5648a65771fa8fe807cb 100644
--- a/test/built-ins/Object/defineProperty/15.2.3.6-4-385.js
+++ b/test/built-ins/Object/defineProperty/15.2.3.6-4-385.js
@@ -6,10 +6,8 @@ es5id: 15.2.3.6-4-385
 description: >
     ES5 Attributes - [[Value]] attribute of data property is a generic
     object
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
         var obj = {};
         var tempObj = { testproperty: 100 };
 
@@ -19,6 +17,5 @@ function testcase() {
 
         var desc = Object.getOwnPropertyDescriptor(obj, "prop");
 
-        return obj.prop === tempObj && desc.value === tempObj;
-    }
-runTestCase(testcase);
+assert.sameValue(obj.prop, tempObj, 'obj.prop');
+assert.sameValue(desc.value, tempObj, 'desc.value');
diff --git a/test/built-ins/Object/defineProperty/15.2.3.6-4-386.js b/test/built-ins/Object/defineProperty/15.2.3.6-4-386.js
index 9756ac528a3684bfc8481cb3afa538de27be4677..44f100f09122a968a634b3a6c0f9fb89202fdffa 100644
--- a/test/built-ins/Object/defineProperty/15.2.3.6-4-386.js
+++ b/test/built-ins/Object/defineProperty/15.2.3.6-4-386.js
@@ -6,10 +6,8 @@ es5id: 15.2.3.6-4-386
 description: >
     ES5 Attributes - [[Value]] attribute of data property is an Array
     object
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
         var obj = {};
         var arrObj = [];
 
@@ -19,6 +17,5 @@ function testcase() {
 
         var desc = Object.getOwnPropertyDescriptor(obj, "prop");
 
-        return obj.prop === arrObj && desc.value === arrObj;
-    }
-runTestCase(testcase);
+assert.sameValue(obj.prop, arrObj, 'obj.prop');
+assert.sameValue(desc.value, arrObj, 'desc.value');
diff --git a/test/built-ins/Object/defineProperty/15.2.3.6-4-387.js b/test/built-ins/Object/defineProperty/15.2.3.6-4-387.js
index b6d28dd2987f6766ee7d99a31dd38c6226ba6a63..0e8c8b77d2f8853a2fd567b39a62b6920ffdd156 100644
--- a/test/built-ins/Object/defineProperty/15.2.3.6-4-387.js
+++ b/test/built-ins/Object/defineProperty/15.2.3.6-4-387.js
@@ -6,10 +6,8 @@ es5id: 15.2.3.6-4-387
 description: >
     ES5 Attributes - [[Value]] attribute of data property is a String
     object
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
         var obj = {};
         var strObj = new String();
 
@@ -19,6 +17,5 @@ function testcase() {
 
         var desc = Object.getOwnPropertyDescriptor(obj, "prop");
 
-        return obj.prop === strObj && desc.value === strObj;
-    }
-runTestCase(testcase);
+assert.sameValue(obj.prop, strObj, 'obj.prop');
+assert.sameValue(desc.value, strObj, 'desc.value');
diff --git a/test/built-ins/Object/defineProperty/15.2.3.6-4-388.js b/test/built-ins/Object/defineProperty/15.2.3.6-4-388.js
index aaafa8975b5e48aa4ec55ebbef24a39bd93018dc..cef375818ba6aeae32392b78ce1b4a97f332ec9b 100644
--- a/test/built-ins/Object/defineProperty/15.2.3.6-4-388.js
+++ b/test/built-ins/Object/defineProperty/15.2.3.6-4-388.js
@@ -6,10 +6,8 @@ es5id: 15.2.3.6-4-388
 description: >
     ES5 Attributes - [[Value]] attribute of data property is a Number
     object
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
         var obj = {};
         var numObj = new Number();
 
@@ -19,6 +17,5 @@ function testcase() {
 
         var desc = Object.getOwnPropertyDescriptor(obj, "prop");
 
-        return obj.prop === numObj && desc.value === numObj;
-    }
-runTestCase(testcase);
+assert.sameValue(obj.prop, numObj, 'obj.prop');
+assert.sameValue(desc.value, numObj, 'desc.value');
diff --git a/test/built-ins/Object/defineProperty/15.2.3.6-4-389.js b/test/built-ins/Object/defineProperty/15.2.3.6-4-389.js
index 21bbd4e67bf418fee70544f2bc707ac9020d0455..4777b4566984ec4ed0eb6520849503c202f9ca32 100644
--- a/test/built-ins/Object/defineProperty/15.2.3.6-4-389.js
+++ b/test/built-ins/Object/defineProperty/15.2.3.6-4-389.js
@@ -6,10 +6,8 @@ es5id: 15.2.3.6-4-389
 description: >
     ES5 Attributes - [[Value]] attribute of data property is a Boolean
     Object
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
         var obj = {};
         var boolObj = new Boolean();
 
@@ -19,6 +17,5 @@ function testcase() {
 
         var desc = Object.getOwnPropertyDescriptor(obj, "prop");
 
-        return obj.prop === boolObj && desc.value === boolObj;
-    }
-runTestCase(testcase);
+assert.sameValue(obj.prop, boolObj, 'obj.prop');
+assert.sameValue(desc.value, boolObj, 'desc.value');
diff --git a/test/built-ins/Object/defineProperty/15.2.3.6-4-390.js b/test/built-ins/Object/defineProperty/15.2.3.6-4-390.js
index e5ec91a843d0abb44475a2b52111602933452592..c60d8330b9e5388943333a619b2ca9043bd0485f 100644
--- a/test/built-ins/Object/defineProperty/15.2.3.6-4-390.js
+++ b/test/built-ins/Object/defineProperty/15.2.3.6-4-390.js
@@ -6,10 +6,8 @@ es5id: 15.2.3.6-4-390
 description: >
     ES5 Attributes - [[Value]] attribute of data property is a
     Function object
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
         var obj = {};
         var funObj = function () { };
 
@@ -19,6 +17,5 @@ function testcase() {
 
         var desc = Object.getOwnPropertyDescriptor(obj, "prop");
 
-        return obj.prop === funObj && desc.value === funObj;
-    }
-runTestCase(testcase);
+assert.sameValue(obj.prop, funObj, 'obj.prop');
+assert.sameValue(desc.value, funObj, 'desc.value');
diff --git a/test/built-ins/Object/defineProperty/15.2.3.6-4-391.js b/test/built-ins/Object/defineProperty/15.2.3.6-4-391.js
index ca1ee5dbb63aa1aabd4ca694df111d03695ceac1..4d8b67005d1e8b91af7130fb95e65c86d8693f97 100644
--- a/test/built-ins/Object/defineProperty/15.2.3.6-4-391.js
+++ b/test/built-ins/Object/defineProperty/15.2.3.6-4-391.js
@@ -6,10 +6,8 @@ es5id: 15.2.3.6-4-391
 description: >
     ES5 Attributes - [[Value]] attribute of data property is an Error
     object
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
         var obj = {};
         var errObj = new Error();
 
@@ -19,6 +17,5 @@ function testcase() {
 
         var desc = Object.getOwnPropertyDescriptor(obj, "prop");
 
-        return obj.prop === errObj && desc.value === errObj;
-    }
-runTestCase(testcase);
+assert.sameValue(obj.prop, errObj, 'obj.prop');
+assert.sameValue(desc.value, errObj, 'desc.value');
diff --git a/test/built-ins/Object/defineProperty/15.2.3.6-4-392.js b/test/built-ins/Object/defineProperty/15.2.3.6-4-392.js
index c9b9f832b347b2346c660e758bf00daced59f822..dd614a6235634f2b9edd93aa416613b05f0a9f62 100644
--- a/test/built-ins/Object/defineProperty/15.2.3.6-4-392.js
+++ b/test/built-ins/Object/defineProperty/15.2.3.6-4-392.js
@@ -6,10 +6,8 @@ es5id: 15.2.3.6-4-392
 description: >
     ES5 Attributes - [[Value]] attribute of data property is a Date
     object
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
         var obj = {};
         var dateObj = new Date();
 
@@ -19,6 +17,5 @@ function testcase() {
 
         var desc = Object.getOwnPropertyDescriptor(obj, "prop");
 
-        return obj.prop === dateObj && desc.value === dateObj;
-    }
-runTestCase(testcase);
+assert.sameValue(obj.prop, dateObj, 'obj.prop');
+assert.sameValue(desc.value, dateObj, 'desc.value');
diff --git a/test/built-ins/Object/defineProperty/15.2.3.6-4-393.js b/test/built-ins/Object/defineProperty/15.2.3.6-4-393.js
index 3b50f25f7e2a5fc169929a5521c21c0327b29c51..2d00d4687e368a495745515f0ce6c9c289016f7d 100644
--- a/test/built-ins/Object/defineProperty/15.2.3.6-4-393.js
+++ b/test/built-ins/Object/defineProperty/15.2.3.6-4-393.js
@@ -6,10 +6,8 @@ es5id: 15.2.3.6-4-393
 description: >
     ES5 Attributes - [[Value]] attribute of data property is a RegExp
     object
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
         var obj = {};
         var regObj = new RegExp();
 
@@ -19,6 +17,5 @@ function testcase() {
 
         var desc = Object.getOwnPropertyDescriptor(obj, "prop");
 
-        return obj.prop === regObj && desc.value === regObj;
-    }
-runTestCase(testcase);
+assert.sameValue(obj.prop, regObj, 'obj.prop');
+assert.sameValue(desc.value, regObj, 'desc.value');
diff --git a/test/built-ins/Object/defineProperty/15.2.3.6-4-394.js b/test/built-ins/Object/defineProperty/15.2.3.6-4-394.js
index b17e0128de11dc88d46321e907fe3cd4588e7fbb..f5e858877b97729dd46f921ef8c232ee55a199bc 100644
--- a/test/built-ins/Object/defineProperty/15.2.3.6-4-394.js
+++ b/test/built-ins/Object/defineProperty/15.2.3.6-4-394.js
@@ -4,10 +4,8 @@
 /*---
 es5id: 15.2.3.6-4-394
 description: ES5 Attributes - [[Value]] attribute of data property is undefined
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
         var obj = {};
 
         Object.defineProperty(obj, "prop", {
@@ -16,6 +14,6 @@ function testcase() {
 
         var desc = Object.getOwnPropertyDescriptor(obj, "prop");
 
-        return obj.hasOwnProperty("prop") && typeof obj.prop === "undefined" && typeof desc.value === "undefined";
-    }
-runTestCase(testcase);
+assert(obj.hasOwnProperty("prop"), 'obj.hasOwnProperty("prop") !== true');
+assert.sameValue(typeof obj.prop, "undefined", 'typeof obj.prop');
+assert.sameValue(typeof desc.value, "undefined", 'typeof desc.value');
diff --git a/test/built-ins/Object/defineProperty/15.2.3.6-4-395.js b/test/built-ins/Object/defineProperty/15.2.3.6-4-395.js
index 70f59193ac43861c281e531e2e10f33649a46ee9..de734ce6dfc456931e2a37b8e3e1682cd242836d 100644
--- a/test/built-ins/Object/defineProperty/15.2.3.6-4-395.js
+++ b/test/built-ins/Object/defineProperty/15.2.3.6-4-395.js
@@ -4,10 +4,8 @@
 /*---
 es5id: 15.2.3.6-4-395
 description: ES5 Attributes - [[Value]] attribute of data property is null
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
         var obj = {};
 
         Object.defineProperty(obj, "prop", {
@@ -16,6 +14,5 @@ function testcase() {
 
         var desc = Object.getOwnPropertyDescriptor(obj, "prop");
 
-        return obj.prop === null && desc.value === null;
-    }
-runTestCase(testcase);
+assert.sameValue(obj.prop, null, 'obj.prop');
+assert.sameValue(desc.value, null, 'desc.value');
diff --git a/test/built-ins/Object/defineProperty/15.2.3.6-4-396.js b/test/built-ins/Object/defineProperty/15.2.3.6-4-396.js
index d9490b158654b56d563e36cb34f7c5561f12de8d..2fb0eff84635e0b8ad1af7a336e5ee956b7050fb 100644
--- a/test/built-ins/Object/defineProperty/15.2.3.6-4-396.js
+++ b/test/built-ins/Object/defineProperty/15.2.3.6-4-396.js
@@ -4,10 +4,8 @@
 /*---
 es5id: 15.2.3.6-4-396
 description: ES5 Attributes - [[Value]] attribute of data property is NaN
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
         var obj = {};
 
         Object.defineProperty(obj, "prop", {
@@ -16,6 +14,5 @@ function testcase() {
 
         var desc = Object.getOwnPropertyDescriptor(obj, "prop");
 
-        return obj.prop !== obj.prop && desc.value !== desc.value;
-    }
-runTestCase(testcase);
+assert(obj.prop !== obj.prop, 'obj.prop !== obj.prop !== true');
+assert(desc.value !== desc.value, 'desc.value !== desc.value !== true');
diff --git a/test/built-ins/Object/defineProperty/15.2.3.6-4-397.js b/test/built-ins/Object/defineProperty/15.2.3.6-4-397.js
index 733ad03db0ffae650ca6023e8a5a531dee1b577c..e368a8e9b70a97d46cec920f85fed6222fe9f77f 100644
--- a/test/built-ins/Object/defineProperty/15.2.3.6-4-397.js
+++ b/test/built-ins/Object/defineProperty/15.2.3.6-4-397.js
@@ -4,10 +4,8 @@
 /*---
 es5id: 15.2.3.6-4-397
 description: ES5 Attributes - [[Value]] attribute of data property is Infinity
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
         var obj = {};
 
         Object.defineProperty(obj, "prop", {
@@ -16,6 +14,5 @@ function testcase() {
 
         var desc = Object.getOwnPropertyDescriptor(obj, "prop");
 
-        return obj.prop === Infinity && desc.value === Infinity;
-    }
-runTestCase(testcase);
+assert.sameValue(obj.prop, Infinity, 'obj.prop');
+assert.sameValue(desc.value, Infinity, 'desc.value');
diff --git a/test/built-ins/Object/defineProperty/15.2.3.6-4-398.js b/test/built-ins/Object/defineProperty/15.2.3.6-4-398.js
index 1e930b39fd92c2e7416661d55dd3780f3811e376..c3aadc10899096a084bdc2873a6a5c8db4f34184 100644
--- a/test/built-ins/Object/defineProperty/15.2.3.6-4-398.js
+++ b/test/built-ins/Object/defineProperty/15.2.3.6-4-398.js
@@ -4,10 +4,8 @@
 /*---
 es5id: 15.2.3.6-4-398
 description: ES5 Attributes - [[Value]] attribute of data property is -Infinity
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
         var obj = {};
 
         Object.defineProperty(obj, "prop", {
@@ -16,6 +14,5 @@ function testcase() {
 
         var desc = Object.getOwnPropertyDescriptor(obj, "prop");
 
-        return obj.prop === -Infinity && desc.value === -Infinity;
-    }
-runTestCase(testcase);
+assert.sameValue(obj.prop, -Infinity, 'obj.prop');
+assert.sameValue(desc.value, -Infinity, 'desc.value');
diff --git a/test/built-ins/Object/defineProperty/15.2.3.6-4-399.js b/test/built-ins/Object/defineProperty/15.2.3.6-4-399.js
index 4a2d76e55e4c4b8799c923c73c0f5a8ef6e478f1..71b0a8e0aff48de47bfab9c5ada15d90f3f1b2de 100644
--- a/test/built-ins/Object/defineProperty/15.2.3.6-4-399.js
+++ b/test/built-ins/Object/defineProperty/15.2.3.6-4-399.js
@@ -6,12 +6,9 @@ es5id: 15.2.3.6-4-399
 description: >
     ES5 Attributes - [[Value]] attribute of data property is the
     global object
-includes:
-    - runTestCase.js
-    - fnGlobalObject.js
+includes: [fnGlobalObject.js]
 ---*/
 
-function testcase() {
         var obj = {};
 
         Object.defineProperty(obj, "prop", {
@@ -20,6 +17,5 @@ function testcase() {
 
         var desc = Object.getOwnPropertyDescriptor(obj, "prop");
 
-        return obj.prop === fnGlobalObject() && desc.value === fnGlobalObject();
-    }
-runTestCase(testcase);
+assert.sameValue(obj.prop, fnGlobalObject(), 'obj.prop');
+assert.sameValue(desc.value, fnGlobalObject(), 'desc.value');
diff --git a/test/built-ins/Object/defineProperty/15.2.3.6-4-412.js b/test/built-ins/Object/defineProperty/15.2.3.6-4-412.js
index c1f192ad7f2a16c2cff05f86396dad06c0bc60cb..03459242fcf9479eee64866175ccb5988324cd8b 100644
--- a/test/built-ins/Object/defineProperty/15.2.3.6-4-412.js
+++ b/test/built-ins/Object/defineProperty/15.2.3.6-4-412.js
@@ -6,10 +6,8 @@ es5id: 15.2.3.6-4-412
 description: >
     ES5 Attributes - [[Value]] field of inherited property of
     [[Prototype]] internal property is correct(Object.create)
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
         var appointment = {};
 
         Object.defineProperty(appointment, "startTime", {
@@ -39,8 +37,7 @@ function testcase() {
             !teamMeeting.hasOwnProperty("startTime") &&
             !teamMeeting.hasOwnProperty('conferenceCall');
 
-        return hasOwnProperty && teamMeeting.name === "NAME" &&
-            teamMeeting.startTime === 1001 &&
-            teamMeeting.conferenceCall === "In-person meeting";
-    }
-runTestCase(testcase);
+assert(hasOwnProperty, 'hasOwnProperty !== true');
+assert.sameValue(teamMeeting.name, "NAME", 'teamMeeting.name');
+assert.sameValue(teamMeeting.startTime, 1001, 'teamMeeting.startTime');
+assert.sameValue(teamMeeting.conferenceCall, "In-person meeting", 'teamMeeting.conferenceCall');
diff --git a/test/built-ins/Object/defineProperty/15.2.3.6-4-413.js b/test/built-ins/Object/defineProperty/15.2.3.6-4-413.js
index 981370eeea60f3348eab4690b99d9bee5e6a8d40..9c832eed18122ed0760c98383ff79d7e0fda3016 100644
--- a/test/built-ins/Object/defineProperty/15.2.3.6-4-413.js
+++ b/test/built-ins/Object/defineProperty/15.2.3.6-4-413.js
@@ -7,10 +7,8 @@ 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 (Object.create)
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
         var appointment = {};
 
         Object.defineProperty(appointment, "startTime", {
@@ -44,8 +42,7 @@ function testcase() {
             teamMeeting.hasOwnProperty("startTime") &&
             teamMeeting.hasOwnProperty('conferenceCall');
 
-        return hasOwnProperty && teamMeeting.name === "Team Meeting" &&
-            teamMeeting.startTime === dateObj &&
-            teamMeeting.conferenceCall === "4255551212";
-    }
-runTestCase(testcase);
+assert(hasOwnProperty, 'hasOwnProperty !== true');
+assert.sameValue(teamMeeting.name, "Team Meeting", 'teamMeeting.name');
+assert.sameValue(teamMeeting.startTime, dateObj, 'teamMeeting.startTime');
+assert.sameValue(teamMeeting.conferenceCall, "4255551212", 'teamMeeting.conferenceCall');
diff --git a/test/built-ins/Object/defineProperty/15.2.3.6-4-414.js b/test/built-ins/Object/defineProperty/15.2.3.6-4-414.js
index 92c8ed22dffa70d2d74e181dcab3739535acac1c..d0d7f1ea4e92e7232d75eaca58a7d4cd6cbf4666 100644
--- a/test/built-ins/Object/defineProperty/15.2.3.6-4-414.js
+++ b/test/built-ins/Object/defineProperty/15.2.3.6-4-414.js
@@ -6,10 +6,8 @@ es5id: 15.2.3.6-4-414
 description: >
     ES5 Attributes - Inherited property whose [[Enumerable]] attribute
     is set to true is enumerable (Object.create)
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
         var appointment = new Object();
 
         Object.defineProperty(appointment, "startTime", {
@@ -54,6 +52,7 @@ function testcase() {
             !teamMeeting.hasOwnProperty("startTime") &&
             !teamMeeting.hasOwnProperty("conferenceCall");
 
-        return hasOwnProperty && verifyTimeProp && verifyNameProp && verifyCallProp;
-    }
-runTestCase(testcase);
+assert(hasOwnProperty, 'hasOwnProperty !== true');
+assert(verifyTimeProp, 'verifyTimeProp !== true');
+assert(verifyNameProp, 'verifyNameProp !== true');
+assert(verifyCallProp, 'verifyCallProp !== true');
diff --git a/test/built-ins/Object/defineProperty/15.2.3.6-4-416.js b/test/built-ins/Object/defineProperty/15.2.3.6-4-416.js
index e584b67635cf3b72ee3e966b8c0df0dcbd03fc07..5106627668b5b232806f3db6343d5cab802380f5 100644
--- a/test/built-ins/Object/defineProperty/15.2.3.6-4-416.js
+++ b/test/built-ins/Object/defineProperty/15.2.3.6-4-416.js
@@ -6,10 +6,8 @@ es5id: 15.2.3.6-4-416
 description: >
     ES5 Attributes - Inherited properties whose [[Enumerable]]
     attribute is set to false is non-enumerable (Object.create)
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
         var appointment = {};
 
         Object.defineProperty(appointment, "startTime", {
@@ -54,6 +52,7 @@ function testcase() {
             !teamMeeting.hasOwnProperty("startTime") &&
             !teamMeeting.hasOwnProperty("conferenceCall");
 
-        return hasOwnProperty && !verifyTimeProp && !verifyNameProp && !verifyCallProp;
-    }
-runTestCase(testcase);
+assert(hasOwnProperty, 'hasOwnProperty !== true');
+assert.sameValue(verifyTimeProp, false, 'verifyTimeProp');
+assert.sameValue(verifyNameProp, false, 'verifyNameProp');
+assert.sameValue(verifyCallProp, false, 'verifyCallProp');
diff --git a/test/built-ins/Object/defineProperty/15.2.3.6-4-422.js b/test/built-ins/Object/defineProperty/15.2.3.6-4-422.js
index 3c440e553f43d3c7723c55f1b1f2c0f1227487f8..af1d6671499bba638c25b4f42dbb17989b6eee8d 100644
--- a/test/built-ins/Object/defineProperty/15.2.3.6-4-422.js
+++ b/test/built-ins/Object/defineProperty/15.2.3.6-4-422.js
@@ -7,10 +7,8 @@ description: >
     ES5 Attributes - [[Get]] attribute of accessor property ([[Get]]
     is undefined, [[Set]] is undefined, [[Enumerable]] is true,
     [[Configurable]] is true) is undefined
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
         var obj = {};
 
         Object.defineProperty(obj, "prop", {
@@ -23,6 +21,5 @@ function testcase() {
         var propertyDefineCorrect = obj.hasOwnProperty("prop");
         var desc = Object.getOwnPropertyDescriptor(obj, "prop");
 
-        return propertyDefineCorrect && typeof desc.get === "undefined";
-    }
-runTestCase(testcase);
+assert(propertyDefineCorrect, 'propertyDefineCorrect !== true');
+assert.sameValue(typeof desc.get, "undefined", 'typeof desc.get');
diff --git a/test/built-ins/Object/defineProperty/15.2.3.6-4-423.js b/test/built-ins/Object/defineProperty/15.2.3.6-4-423.js
index 1eeb87f0c91c3dbe753f45529b98b58851aa200e..8f3e9ae5b0eeac3429469a65a847b57f72dcb12b 100644
--- a/test/built-ins/Object/defineProperty/15.2.3.6-4-423.js
+++ b/test/built-ins/Object/defineProperty/15.2.3.6-4-423.js
@@ -7,10 +7,8 @@ description: >
     ES5 Attributes - [[Set]] attribute of accessor property ([[Get]]
     is undefined, [[Set]] is undefined, [[Enumerable]] is true,
     [[Configurable]] is true) is undefined
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
         var obj = {};
 
         Object.defineProperty(obj, "prop", {
@@ -23,6 +21,5 @@ function testcase() {
         var propertyDefineCorrect = obj.hasOwnProperty("prop");
         var desc = Object.getOwnPropertyDescriptor(obj, "prop");
 
-        return propertyDefineCorrect && typeof desc.set === "undefined";
-    }
-runTestCase(testcase);
+assert(propertyDefineCorrect, 'propertyDefineCorrect !== true');
+assert.sameValue(typeof desc.set, "undefined", 'typeof desc.set');
diff --git a/test/built-ins/Object/defineProperty/15.2.3.6-4-425.js b/test/built-ins/Object/defineProperty/15.2.3.6-4-425.js
index 58fc8af08218efde2ea1c0d0e4f9c7b07a0a71e4..f088516cc0bc35d3a6fe6b2c5a90c2da5d3b060f 100644
--- a/test/built-ins/Object/defineProperty/15.2.3.6-4-425.js
+++ b/test/built-ins/Object/defineProperty/15.2.3.6-4-425.js
@@ -7,10 +7,8 @@ description: >
     ES5 Attributes - property ([[Get]] is undefined, [[Set]] is
     undefined, [[Enumerable]] is true, [[Configurable]] is true) is
     deletable
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
         var obj = {};
 
         Object.defineProperty(obj, "prop", {
@@ -25,6 +23,6 @@ function testcase() {
 
         delete obj.prop;
 
-        return propertyDefineCorrect && desc.configurable === true && !obj.hasOwnProperty("prop");
-    }
-runTestCase(testcase);
+assert(propertyDefineCorrect, 'propertyDefineCorrect !== true');
+assert.sameValue(desc.configurable, true, 'desc.configurable');
+assert.sameValue(obj.hasOwnProperty("prop"), false, 'obj.hasOwnProperty("prop")');
diff --git a/test/built-ins/Object/defineProperty/15.2.3.6-4-426.js b/test/built-ins/Object/defineProperty/15.2.3.6-4-426.js
index 229688a85730a8a1f99f9c716974f6879868de1a..645d4286b12c5f968788b331cf87cf92a37d5fa8 100644
--- a/test/built-ins/Object/defineProperty/15.2.3.6-4-426.js
+++ b/test/built-ins/Object/defineProperty/15.2.3.6-4-426.js
@@ -8,10 +8,8 @@ description: >
     property ([[Get]] is undefined, [[Set]] is undefined,
     [[Enumerable]] is true, [[Configurable]] is true) to different
     value
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
         var obj = {};
         var getFunc = function () {
             return 1001;
@@ -34,6 +32,7 @@ function testcase() {
         var result2 = obj.prop === 1001;
         var desc2 = Object.getOwnPropertyDescriptor(obj, "prop");
 
-        return result1 && result2 && typeof desc1.get === "undefined" && desc2.get === getFunc;
-    }
-runTestCase(testcase);
+assert(result1, 'result1 !== true');
+assert(result2, 'result2 !== true');
+assert.sameValue(typeof desc1.get, "undefined", 'typeof desc1.get');
+assert.sameValue(desc2.get, getFunc, 'desc2.get');
diff --git a/test/built-ins/Object/defineProperty/15.2.3.6-4-427.js b/test/built-ins/Object/defineProperty/15.2.3.6-4-427.js
index 8f1dd630f20eb84162da2542cb28d53ea1e97946..0aad297c2c650acb500c0bd6c5ac5ddf36df0284 100644
--- a/test/built-ins/Object/defineProperty/15.2.3.6-4-427.js
+++ b/test/built-ins/Object/defineProperty/15.2.3.6-4-427.js
@@ -8,10 +8,8 @@ description: >
     property ([[Get]] is undefined, [[Set]] is undefined,
     [[Enumerable]] is true, [[Configurable]] is true) to different
     value
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
         var obj = {};
         var verifySetFunc = "data";
         var setFunc = function (value) {
@@ -35,6 +33,7 @@ function testcase() {
         var propertyDefineCorrect = obj.hasOwnProperty("prop");
         var desc2 = Object.getOwnPropertyDescriptor(obj, "prop");
 
-        return propertyDefineCorrect && typeof desc1.set === "undefined" && desc2.set === setFunc && verifySetFunc === "overrideData";
-    }
-runTestCase(testcase);
+assert(propertyDefineCorrect, 'propertyDefineCorrect !== true');
+assert.sameValue(typeof desc1.set, "undefined", 'typeof desc1.set');
+assert.sameValue(desc2.set, setFunc, 'desc2.set');
+assert.sameValue(verifySetFunc, "overrideData", 'verifySetFunc');
diff --git a/test/built-ins/Object/defineProperty/15.2.3.6-4-428.js b/test/built-ins/Object/defineProperty/15.2.3.6-4-428.js
index ca3d2ed4c001c6135640ae100068faf0626864d4..1e52d201bdd368e775eb5333ff3f2f79963b2241 100644
--- a/test/built-ins/Object/defineProperty/15.2.3.6-4-428.js
+++ b/test/built-ins/Object/defineProperty/15.2.3.6-4-428.js
@@ -8,10 +8,8 @@ description: >
     accessor property ([[Get]] is undefined, [[Set]] is undefined,
     [[Enumerable]] is true, [[Configurable]] is true) to different
     value
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
         var obj = {};
 
         Object.defineProperty(obj, "prop", {
@@ -39,6 +37,7 @@ function testcase() {
             }
         }
 
-        return result1 && !result2 && desc1.enumerable === true && desc2.enumerable === false;
-    }
-runTestCase(testcase);
+assert(result1, 'result1 !== true');
+assert.sameValue(result2, false, 'result2');
+assert.sameValue(desc1.enumerable, true, 'desc1.enumerable');
+assert.sameValue(desc2.enumerable, false, 'desc2.enumerable');
diff --git a/test/built-ins/Object/defineProperty/15.2.3.6-4-430.js b/test/built-ins/Object/defineProperty/15.2.3.6-4-430.js
index bd232972ff20b7c7fb449715ee2232f5fd6f2f64..315581b82bd9c17e728c7b90e262d207d3cf974b 100644
--- a/test/built-ins/Object/defineProperty/15.2.3.6-4-430.js
+++ b/test/built-ins/Object/defineProperty/15.2.3.6-4-430.js
@@ -7,10 +7,8 @@ description: >
     ES5 Attributes - success to update the accessor property ([[Get]]
     is undefined, [[Set]] is undefined, [[Enumerable]] is true,
     [[Configurable]] is true) to a data property
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
         var obj = {};
 
         Object.defineProperty(obj, "prop", {
@@ -26,6 +24,5 @@ function testcase() {
         });
         var desc2 = Object.getOwnPropertyDescriptor(obj, "prop");
 
-        return desc1.hasOwnProperty("get") && desc2.hasOwnProperty("value");
-    }
-runTestCase(testcase);
+assert(desc1.hasOwnProperty("get"), 'desc1.hasOwnProperty("get") !== true');
+assert(desc2.hasOwnProperty("value"), 'desc2.hasOwnProperty("value") !== true');
diff --git a/test/built-ins/Object/defineProperty/15.2.3.6-4-431.js b/test/built-ins/Object/defineProperty/15.2.3.6-4-431.js
index 0ce9f526c785434068a1e1aa2ccf3ca25bf677c3..ad0e57ba92689cf71059b95d125c644160a46cad 100644
--- a/test/built-ins/Object/defineProperty/15.2.3.6-4-431.js
+++ b/test/built-ins/Object/defineProperty/15.2.3.6-4-431.js
@@ -7,10 +7,8 @@ description: >
     ES5 Attributes - [[Get]] attribute of accessor property ([[Get]]
     is undefined, [[Set]] is undefined, [[Enumerable]] is true,
     [[Configurable]] is false) is undefined
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
         var obj = {};
 
         Object.defineProperty(obj, "prop", {
@@ -23,6 +21,5 @@ function testcase() {
         var propertyDefineCorrect = obj.hasOwnProperty("prop");
         var desc = Object.getOwnPropertyDescriptor(obj, "prop");
 
-        return propertyDefineCorrect && typeof desc.get === "undefined";
-    }
-runTestCase(testcase);
+assert(propertyDefineCorrect, 'propertyDefineCorrect !== true');
+assert.sameValue(typeof desc.get, "undefined", 'typeof desc.get');
diff --git a/test/built-ins/Object/defineProperty/15.2.3.6-4-432.js b/test/built-ins/Object/defineProperty/15.2.3.6-4-432.js
index a39238a4c2b4f7a2cddf82f3cc79a45deb4bb83e..dc57d00b1484e4366265b11226554fecf62fbd48 100644
--- a/test/built-ins/Object/defineProperty/15.2.3.6-4-432.js
+++ b/test/built-ins/Object/defineProperty/15.2.3.6-4-432.js
@@ -7,10 +7,8 @@ description: >
     ES5 Attributes - [[Set]] attribute of accessor property ([[Get]]
     is undefined, [[Set]] is undefined, [[Enumerable]] is true,
     [[Configurable]] is false) is undefined
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
         var obj = {};
 
         Object.defineProperty(obj, "prop", {
@@ -23,6 +21,5 @@ function testcase() {
         var propertyDefineCorrect = obj.hasOwnProperty("prop");
         var desc = Object.getOwnPropertyDescriptor(obj, "prop");
 
-        return propertyDefineCorrect && typeof desc.set === "undefined";
-    }
-runTestCase(testcase);
+assert(propertyDefineCorrect, 'propertyDefineCorrect !== true');
+assert.sameValue(typeof desc.set, "undefined", 'typeof desc.set');
diff --git a/test/built-ins/Object/defineProperty/15.2.3.6-4-440.js b/test/built-ins/Object/defineProperty/15.2.3.6-4-440.js
index e1d09f964f4cf49500d75d502b91c3ce158a2b77..cbdec5470c0bc378826decd6a3dc7d0ee88b40c4 100644
--- a/test/built-ins/Object/defineProperty/15.2.3.6-4-440.js
+++ b/test/built-ins/Object/defineProperty/15.2.3.6-4-440.js
@@ -7,10 +7,8 @@ description: >
     ES5 Attributes - [[Get]] attribute of accessor property ([[Get]]
     is undefined, [[Set]] is undefined, [[Enumerable]] is false,
     [[Configurable]] is true) is undefined
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
         var obj = {};
 
         Object.defineProperty(obj, "prop", {
@@ -23,6 +21,5 @@ function testcase() {
         var propertyDefineCorrect = obj.hasOwnProperty("prop");
         var desc = Object.getOwnPropertyDescriptor(obj, "prop");
 
-        return propertyDefineCorrect && typeof desc.get === "undefined";
-    }
-runTestCase(testcase);
+assert(propertyDefineCorrect, 'propertyDefineCorrect !== true');
+assert.sameValue(typeof desc.get, "undefined", 'typeof desc.get');
diff --git a/test/built-ins/Object/defineProperty/15.2.3.6-4-441.js b/test/built-ins/Object/defineProperty/15.2.3.6-4-441.js
index 12fe8dc327260f81050d83c9a49a1b9f6c364856..2a44e2278af28a459de6c033e1e968dcf6a461f4 100644
--- a/test/built-ins/Object/defineProperty/15.2.3.6-4-441.js
+++ b/test/built-ins/Object/defineProperty/15.2.3.6-4-441.js
@@ -7,10 +7,8 @@ description: >
     ES5 Attributes - [[Set]] attribute of accessor property ([[Get]]
     is undefined, [[Set]] is undefined, [[Enumerable]] is false,
     [[Configurable]] is true) is undefined
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
         var obj = {};
 
         Object.defineProperty(obj, "prop", {
@@ -23,6 +21,5 @@ function testcase() {
         var propertyDefineCorrect = obj.hasOwnProperty("prop");
         var desc = Object.getOwnPropertyDescriptor(obj, "prop");
 
-        return propertyDefineCorrect && typeof desc.set === "undefined";
-    }
-runTestCase(testcase);
+assert(propertyDefineCorrect, 'propertyDefineCorrect !== true');
+assert.sameValue(typeof desc.set, "undefined", 'typeof desc.set');
diff --git a/test/built-ins/Object/defineProperty/15.2.3.6-4-443.js b/test/built-ins/Object/defineProperty/15.2.3.6-4-443.js
index 69893b1b916c4e051b3189a9ee396c25594192bb..b20c7d664cee52c7f31401c4b6acba9ec2b92325 100644
--- a/test/built-ins/Object/defineProperty/15.2.3.6-4-443.js
+++ b/test/built-ins/Object/defineProperty/15.2.3.6-4-443.js
@@ -7,10 +7,8 @@ description: >
     ES5 Attributes - property ([[Get]] is undefined, [[Set]] is
     undefined, [[Enumerable]] is false, [[Configurable]] is true) is
     deletable
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
         var obj = {};
 
         Object.defineProperty(obj, "prop", {
@@ -25,6 +23,6 @@ function testcase() {
 
         delete obj.prop;
 
-        return propertyDefineCorrect && desc.configurable === true && !obj.hasOwnProperty("prop");
-    }
-runTestCase(testcase);
+assert(propertyDefineCorrect, 'propertyDefineCorrect !== true');
+assert.sameValue(desc.configurable, true, 'desc.configurable');
+assert.sameValue(obj.hasOwnProperty("prop"), false, 'obj.hasOwnProperty("prop")');
diff --git a/test/built-ins/Object/defineProperty/15.2.3.6-4-444.js b/test/built-ins/Object/defineProperty/15.2.3.6-4-444.js
index 8236e86d13902341066bce06538534aaba87b364..06fe5d84f2561a610a3a8e5b72a84b91526533fe 100644
--- a/test/built-ins/Object/defineProperty/15.2.3.6-4-444.js
+++ b/test/built-ins/Object/defineProperty/15.2.3.6-4-444.js
@@ -8,10 +8,8 @@ description: >
     property ([[Get]] is undefined, [[Set]] is undefined,
     [[Enumerable]] is false, [[Configurable]] is true) to different
     value
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
         var obj = {};
         var getFunc = function () {
             return 1001;
@@ -34,6 +32,7 @@ function testcase() {
         var result2 = obj.prop === 1001;
         var desc2 = Object.getOwnPropertyDescriptor(obj, "prop");
 
-        return result1 && result2 && typeof desc1.get === "undefined" && desc2.get === getFunc;
-    }
-runTestCase(testcase);
+assert(result1, 'result1 !== true');
+assert(result2, 'result2 !== true');
+assert.sameValue(typeof desc1.get, "undefined", 'typeof desc1.get');
+assert.sameValue(desc2.get, getFunc, 'desc2.get');
diff --git a/test/built-ins/Object/defineProperty/15.2.3.6-4-445.js b/test/built-ins/Object/defineProperty/15.2.3.6-4-445.js
index f1a96669b600f86400e9a8fae42dedbb4328ad3a..2e29668de70d3deffa6938522f6a72c2cdc74749 100644
--- a/test/built-ins/Object/defineProperty/15.2.3.6-4-445.js
+++ b/test/built-ins/Object/defineProperty/15.2.3.6-4-445.js
@@ -8,10 +8,8 @@ description: >
     property ([[Get]] is undefined, [[Set]] is undefined,
     [[Enumerable]] is false, [[Configurable]] is true) to different
     value
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
         var obj = {};
 
         var verifySetFunc = "data";
@@ -36,6 +34,7 @@ function testcase() {
         obj.prop = "overrideData";
         var desc2 = Object.getOwnPropertyDescriptor(obj, "prop");
 
-        return typeof desc1.set === "undefined" && propertyDefineCorrect && desc2.set === setFunc && verifySetFunc === "overrideData";
-    }
-runTestCase(testcase);
+assert.sameValue(typeof desc1.set, "undefined", 'typeof desc1.set');
+assert(propertyDefineCorrect, 'propertyDefineCorrect !== true');
+assert.sameValue(desc2.set, setFunc, 'desc2.set');
+assert.sameValue(verifySetFunc, "overrideData", 'verifySetFunc');
diff --git a/test/built-ins/Object/defineProperty/15.2.3.6-4-446.js b/test/built-ins/Object/defineProperty/15.2.3.6-4-446.js
index dd61f38df99bf4e015e9ad232c3feb8255c6b7c7..83a537a9ca6e3bb085c73a1c8d3877f7713f2af9 100644
--- a/test/built-ins/Object/defineProperty/15.2.3.6-4-446.js
+++ b/test/built-ins/Object/defineProperty/15.2.3.6-4-446.js
@@ -8,10 +8,8 @@ description: >
     accessor property ([[Get]] is undefined, [[Set]] is undefined,
     [[Enumerable]] is false, [[Configurable]] is true) to different
     value
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
         var obj = {};
 
         Object.defineProperty(obj, "prop", {
@@ -39,6 +37,7 @@ function testcase() {
             }
         }
 
-        return !result1 && result2 && desc1.enumerable === false && desc2.enumerable === true;
-    }
-runTestCase(testcase);
+assert.sameValue(result1, false, 'result1');
+assert(result2, 'result2 !== true');
+assert.sameValue(desc1.enumerable, false, 'desc1.enumerable');
+assert.sameValue(desc2.enumerable, true, 'desc2.enumerable');
diff --git a/test/built-ins/Object/defineProperty/15.2.3.6-4-448.js b/test/built-ins/Object/defineProperty/15.2.3.6-4-448.js
index a8970332a502bad4027d41b19e50966e9bfe4a02..c86437c689e58e30ce1521697eb1d281b7f0441b 100644
--- a/test/built-ins/Object/defineProperty/15.2.3.6-4-448.js
+++ b/test/built-ins/Object/defineProperty/15.2.3.6-4-448.js
@@ -7,10 +7,8 @@ description: >
     ES5 Attributes - success to update the accessor property ([[Get]]
     is undefined, [[Set]] is undefined, [[Enumerable]] is false,
     [[Configurable]] is true) to a data property
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
         var obj = {};
 
         Object.defineProperty(obj, "prop", {
@@ -26,6 +24,5 @@ function testcase() {
         });
         var desc2 = Object.getOwnPropertyDescriptor(obj, "prop");
 
-        return desc1.hasOwnProperty("get") && desc2.hasOwnProperty("value");
-    }
-runTestCase(testcase);
+assert(desc1.hasOwnProperty("get"), 'desc1.hasOwnProperty("get") !== true');
+assert(desc2.hasOwnProperty("value"), 'desc2.hasOwnProperty("value") !== true');
diff --git a/test/built-ins/Object/defineProperty/15.2.3.6-4-449.js b/test/built-ins/Object/defineProperty/15.2.3.6-4-449.js
index 3b623861f449debf5ccd4bb920225f5a7c02942a..8454c88fe08a4def9d265d6ad9f6a73094f467d3 100644
--- a/test/built-ins/Object/defineProperty/15.2.3.6-4-449.js
+++ b/test/built-ins/Object/defineProperty/15.2.3.6-4-449.js
@@ -7,10 +7,8 @@ description: >
     ES5 Attributes - [[Get]] attribute of accessor property ([[Get]]
     is undefined, [[Set]] is undefined, [[Enumerable]] is false,
     [[Configurable]] is false) is undefined
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
         var obj = {};
 
         Object.defineProperty(obj, "prop", {
@@ -23,6 +21,5 @@ function testcase() {
         var propertyDefineCorrect = obj.hasOwnProperty("prop");
         var desc = Object.getOwnPropertyDescriptor(obj, "prop");
 
-        return propertyDefineCorrect && typeof desc.get === "undefined";
-    }
-runTestCase(testcase);
+assert(propertyDefineCorrect, 'propertyDefineCorrect !== true');
+assert.sameValue(typeof desc.get, "undefined", 'typeof desc.get');
diff --git a/test/built-ins/Object/defineProperty/15.2.3.6-4-450.js b/test/built-ins/Object/defineProperty/15.2.3.6-4-450.js
index 44411c65bff438ec2d4ef5865a4400c93d90e413..8b3da549b1042c13596b5922638f2e36470f9bd4 100644
--- a/test/built-ins/Object/defineProperty/15.2.3.6-4-450.js
+++ b/test/built-ins/Object/defineProperty/15.2.3.6-4-450.js
@@ -7,10 +7,8 @@ description: >
     ES5 Attributes - [[Set]] attribute of accessor property ([[Get]]
     is undefined, [[Set]] is undefined, [[Enumerable]] is false,
     [[Configurable]] is false) is undefined
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
         var obj = {};
 
         Object.defineProperty(obj, "prop", {
@@ -23,6 +21,5 @@ function testcase() {
         var propertyDefineCorrect = obj.hasOwnProperty("prop");
         var desc = Object.getOwnPropertyDescriptor(obj, "prop");
 
-        return propertyDefineCorrect && typeof desc.set === "undefined";
-    }
-runTestCase(testcase);
+assert(propertyDefineCorrect, 'propertyDefineCorrect !== true');
+assert.sameValue(typeof desc.set, "undefined", 'typeof desc.set');
diff --git a/test/built-ins/Object/defineProperty/15.2.3.6-4-458.js b/test/built-ins/Object/defineProperty/15.2.3.6-4-458.js
index ed84cf5533ec5801ded8ac455b34c636d7bed637..97868514ad7d6403b50581ad388d78696ac28cb3 100644
--- a/test/built-ins/Object/defineProperty/15.2.3.6-4-458.js
+++ b/test/built-ins/Object/defineProperty/15.2.3.6-4-458.js
@@ -7,10 +7,8 @@ description: >
     ES5 Attributes - [[Get]] attribute of accessor property ([[Get]]
     is undefined, [[Set]] is a Function, [[Enumerable]] is true,
     [[Configurable]] is true) is undefined
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
         var obj = {};
 
         var verifySetFunc = "data";
@@ -28,6 +26,5 @@ function testcase() {
         var propertyDefineCorrect = obj.hasOwnProperty("prop");
         var desc = Object.getOwnPropertyDescriptor(obj, "prop");
 
-        return propertyDefineCorrect && typeof desc.get === "undefined";
-    }
-runTestCase(testcase);
+assert(propertyDefineCorrect, 'propertyDefineCorrect !== true');
+assert.sameValue(typeof desc.get, "undefined", 'typeof desc.get');
diff --git a/test/built-ins/Object/defineProperty/15.2.3.6-4-459.js b/test/built-ins/Object/defineProperty/15.2.3.6-4-459.js
index dd1db334d4c0b3268138880af287d284a4aebf90..7f5fbeb97c33fa93e49394e200b7b81b54c5bb1a 100644
--- a/test/built-ins/Object/defineProperty/15.2.3.6-4-459.js
+++ b/test/built-ins/Object/defineProperty/15.2.3.6-4-459.js
@@ -7,10 +7,8 @@ description: >
     ES5 Attributes - [[Set]] attribute of accessor property ([[Get]]
     is undefined, [[Set]] is a Function, [[Enumerable]] is true,
     [[Configurable]] is true) is the expected function
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
         var obj = {};
 
         var verifySetFunc = "data";
@@ -29,6 +27,6 @@ function testcase() {
         var propertyDefineCorrect = obj.hasOwnProperty("prop");
         var desc = Object.getOwnPropertyDescriptor(obj, "prop");
 
-        return propertyDefineCorrect && desc.set === setFunc && verifySetFunc === "overrideData";
-    }
-runTestCase(testcase);
+assert(propertyDefineCorrect, 'propertyDefineCorrect !== true');
+assert.sameValue(desc.set, setFunc, 'desc.set');
+assert.sameValue(verifySetFunc, "overrideData", 'verifySetFunc');
diff --git a/test/built-ins/Object/defineProperty/15.2.3.6-4-46.js b/test/built-ins/Object/defineProperty/15.2.3.6-4-46.js
index 6cc0343bdedcd0df671a488c6e111e86319b1322..6bb80f60890ae45d7b5ba530e834b42800e9fa52 100644
--- a/test/built-ins/Object/defineProperty/15.2.3.6-4-46.js
+++ b/test/built-ins/Object/defineProperty/15.2.3.6-4-46.js
@@ -7,10 +7,8 @@ description: >
     Object.defineProperty - 'name' is defined as data property if
     'name' property doesn't exist in 'O' and 'desc' is generic
     descriptor (8.12.9 step 4.a)
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
         var obj = {};
 
         Object.defineProperty(obj, "property", {
@@ -24,6 +22,5 @@ function testcase() {
             }
         }
 
-        return obj.hasOwnProperty("property") && isEnumerable;
-    }
-runTestCase(testcase);
+assert(obj.hasOwnProperty("property"), 'obj.hasOwnProperty("property") !== true');
+assert(isEnumerable, 'isEnumerable !== true');
diff --git a/test/built-ins/Object/defineProperty/15.2.3.6-4-461.js b/test/built-ins/Object/defineProperty/15.2.3.6-4-461.js
index 45241ce3c7484c761c0c234355d0a1a59dd77353..0def8453a79776cbcb2c2b1ae2c7c72d3a567d89 100644
--- a/test/built-ins/Object/defineProperty/15.2.3.6-4-461.js
+++ b/test/built-ins/Object/defineProperty/15.2.3.6-4-461.js
@@ -7,10 +7,8 @@ description: >
     ES5 Attributes - property ([[Get]] is undefined, [[Set]] is a
     Function, [[Enumerable]] is true, [[Configurable]] is true) is
     deletable
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
         var obj = {};
 
         var verifySetFunc = "data";
@@ -30,6 +28,6 @@ function testcase() {
 
         delete obj.prop;
 
-        return propertyDefineCorrect && desc.configurable === true && !obj.hasOwnProperty("prop");
-    }
-runTestCase(testcase);
+assert(propertyDefineCorrect, 'propertyDefineCorrect !== true');
+assert.sameValue(desc.configurable, true, 'desc.configurable');
+assert.sameValue(obj.hasOwnProperty("prop"), false, 'obj.hasOwnProperty("prop")');
diff --git a/test/built-ins/Object/defineProperty/15.2.3.6-4-462.js b/test/built-ins/Object/defineProperty/15.2.3.6-4-462.js
index 8ae6358b9d0e06ac5cca39955e5cd6aa288261ac..3e1a0de3b59506b9f9d77a5868770406804d6a15 100644
--- a/test/built-ins/Object/defineProperty/15.2.3.6-4-462.js
+++ b/test/built-ins/Object/defineProperty/15.2.3.6-4-462.js
@@ -8,10 +8,8 @@ description: >
     property ([[Get]] is undefined, [[Set]] is a Function,
     [[Enumerable]] is true, [[Configurable]] is true) to different
     value
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
         var obj = {};
 
         var getFunc = function () {
@@ -40,6 +38,7 @@ function testcase() {
         var result2 = obj.prop === 1001;
         var desc2 = Object.getOwnPropertyDescriptor(obj, "prop");
 
-        return result1 && result2 && typeof desc1.get === "undefined" && desc2.get === getFunc;
-    }
-runTestCase(testcase);
+assert(result1, 'result1 !== true');
+assert(result2, 'result2 !== true');
+assert.sameValue(typeof desc1.get, "undefined", 'typeof desc1.get');
+assert.sameValue(desc2.get, getFunc, 'desc2.get');
diff --git a/test/built-ins/Object/defineProperty/15.2.3.6-4-463.js b/test/built-ins/Object/defineProperty/15.2.3.6-4-463.js
index ea7144dd2890c2714965656ee12b5857729cf68f..2df1dddc75a45e0de1c661e80ec286ca287e9510 100644
--- a/test/built-ins/Object/defineProperty/15.2.3.6-4-463.js
+++ b/test/built-ins/Object/defineProperty/15.2.3.6-4-463.js
@@ -8,10 +8,8 @@ description: >
     property ([[Get]] is undefined, [[Set]] is a Function,
     [[Enumerable]] is true, [[Configurable]] is true) to different
     value
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
         var obj = {};
 
         var verifySetFunc = "data";
@@ -34,6 +32,5 @@ function testcase() {
 
         var desc2 = Object.getOwnPropertyDescriptor(obj, "prop");
 
-        return desc1.set === setFunc && typeof desc2.set === "undefined";
-    }
-runTestCase(testcase);
+assert.sameValue(desc1.set, setFunc, 'desc1.set');
+assert.sameValue(typeof desc2.set, "undefined", 'typeof desc2.set');
diff --git a/test/built-ins/Object/defineProperty/15.2.3.6-4-464.js b/test/built-ins/Object/defineProperty/15.2.3.6-4-464.js
index 0cf890bd1e00ccdb74dec73410ea8b2c239af54d..bd4d6d7095d1280e964930cda2a1665a76e44e0a 100644
--- a/test/built-ins/Object/defineProperty/15.2.3.6-4-464.js
+++ b/test/built-ins/Object/defineProperty/15.2.3.6-4-464.js
@@ -8,10 +8,8 @@ description: >
     accessor property ([[Get]] is undefined, [[Set]] is a Function,
     [[Enumerable]] is true, [[Configurable]] is true) to different
     value
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
         var obj = {};
 
         var verifySetFunc = "data";
@@ -45,6 +43,7 @@ function testcase() {
             }
         }
 
-        return result1 && !result2 && desc1.enumerable === true && desc2.enumerable === false;
-    }
-runTestCase(testcase);
+assert(result1, 'result1 !== true');
+assert.sameValue(result2, false, 'result2');
+assert.sameValue(desc1.enumerable, true, 'desc1.enumerable');
+assert.sameValue(desc2.enumerable, false, 'desc2.enumerable');
diff --git a/test/built-ins/Object/defineProperty/15.2.3.6-4-466.js b/test/built-ins/Object/defineProperty/15.2.3.6-4-466.js
index 0687dce436cc8efced100c886fe138e868a9def6..9bbd3affe68eda60f66d4408e778389abf1507c9 100644
--- a/test/built-ins/Object/defineProperty/15.2.3.6-4-466.js
+++ b/test/built-ins/Object/defineProperty/15.2.3.6-4-466.js
@@ -7,10 +7,8 @@ description: >
     ES5 Attributes - success to update the accessor property ([[Get]]
     is undefined, [[Set]] is a Function, [[Enumerable]] is true,
     [[Configurable]] is true) to a data property
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
         var obj = {};
 
         var verifySetFunc = "data";
@@ -31,6 +29,5 @@ function testcase() {
         });
         var desc2 = Object.getOwnPropertyDescriptor(obj, "prop");
 
-        return desc1.hasOwnProperty("get") && desc2.hasOwnProperty("value");
-    }
-runTestCase(testcase);
+assert(desc1.hasOwnProperty("get"), 'desc1.hasOwnProperty("get") !== true');
+assert(desc2.hasOwnProperty("value"), 'desc2.hasOwnProperty("value") !== true');
diff --git a/test/built-ins/Object/defineProperty/15.2.3.6-4-467.js b/test/built-ins/Object/defineProperty/15.2.3.6-4-467.js
index a6f0ca3d5fbcc2bc5a81b0b70fda7de2ed185369..9bd1e448e4ca3e62d4f3a5b76f8a264f8e477a77 100644
--- a/test/built-ins/Object/defineProperty/15.2.3.6-4-467.js
+++ b/test/built-ins/Object/defineProperty/15.2.3.6-4-467.js
@@ -7,10 +7,8 @@ description: >
     ES5 Attributes - [[Get]] attribute of accessor property ([[Get]]
     is undefined, [[Set]] is a Function, [[Enumerable]] is true,
     [[Configurable]] is false) is undefined
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
         var obj = {};
 
         var verifySetFunc = "data";
@@ -28,6 +26,5 @@ function testcase() {
         var propertyDefineCorrect = obj.hasOwnProperty("prop");
         var desc = Object.getOwnPropertyDescriptor(obj, "prop");
 
-        return propertyDefineCorrect && typeof desc.get === "undefined";
-    }
-runTestCase(testcase);
+assert(propertyDefineCorrect, 'propertyDefineCorrect !== true');
+assert.sameValue(typeof desc.get, "undefined", 'typeof desc.get');
diff --git a/test/built-ins/Object/defineProperty/15.2.3.6-4-468.js b/test/built-ins/Object/defineProperty/15.2.3.6-4-468.js
index 998de8bf6448d875d05e92593d8f45c527bf7a24..0ad4ce43678457cabf5b68f8c0dee2f9d270761f 100644
--- a/test/built-ins/Object/defineProperty/15.2.3.6-4-468.js
+++ b/test/built-ins/Object/defineProperty/15.2.3.6-4-468.js
@@ -7,10 +7,8 @@ description: >
     ES5 Attributes - [[Set]] attribute of accessor property ([[Get]]
     is undefined, [[Set]] is a Function, [[Enumerable]] is true,
     [[Configurable]] is false) is the expected function
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
         var obj = {};
 
         var verifySetFunc = "data";
@@ -29,6 +27,6 @@ function testcase() {
         var propertyDefineCorrect = obj.hasOwnProperty("prop");
         var desc = Object.getOwnPropertyDescriptor(obj, "prop");
 
-        return propertyDefineCorrect && desc.set === setFunc && verifySetFunc === "overrideData";
-    }
-runTestCase(testcase);
+assert(propertyDefineCorrect, 'propertyDefineCorrect !== true');
+assert.sameValue(desc.set, setFunc, 'desc.set');
+assert.sameValue(verifySetFunc, "overrideData", 'verifySetFunc');
diff --git a/test/built-ins/Object/defineProperty/15.2.3.6-4-476.js b/test/built-ins/Object/defineProperty/15.2.3.6-4-476.js
index 6cd24bf84c16cd7d18554edac0067a411d04dbc9..c9203cdd733800e1a9091b49701faeb6c46c2c77 100644
--- a/test/built-ins/Object/defineProperty/15.2.3.6-4-476.js
+++ b/test/built-ins/Object/defineProperty/15.2.3.6-4-476.js
@@ -7,10 +7,8 @@ description: >
     ES5 Attributes - [[Get]] attribute of accessor property ([[Get]]
     is undefined, [[Set]] is a Function, [[Enumerable]] is false,
     [[Configurable]] is true) is undefined
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
         var obj = {};
 
         var verifySetFunc = "data";
@@ -28,6 +26,5 @@ function testcase() {
         var propertyDefineCorrect = obj.hasOwnProperty("prop");
         var desc = Object.getOwnPropertyDescriptor(obj, "prop");
 
-        return propertyDefineCorrect && typeof desc.get === "undefined";
-    }
-runTestCase(testcase);
+assert(propertyDefineCorrect, 'propertyDefineCorrect !== true');
+assert.sameValue(typeof desc.get, "undefined", 'typeof desc.get');
diff --git a/test/built-ins/Object/defineProperty/15.2.3.6-4-477.js b/test/built-ins/Object/defineProperty/15.2.3.6-4-477.js
index 60f23f248bff99d5c6d98a5385bf8ab917a1b934..0285a1f9b7419c392836d6fd07e88c8ce703eeca 100644
--- a/test/built-ins/Object/defineProperty/15.2.3.6-4-477.js
+++ b/test/built-ins/Object/defineProperty/15.2.3.6-4-477.js
@@ -7,10 +7,8 @@ description: >
     ES5 Attributes - [[Set]] attribute of accessor property ([[Get]]
     is undefined, [[Set]] is a Function, [[Enumerable]] is false,
     [[Configurable]] is true) is the expected function
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
         var obj = {};
 
         var verifySetFunc = "data";
@@ -29,6 +27,6 @@ function testcase() {
         var propertyDefineCorrect = obj.hasOwnProperty("prop");
         var desc = Object.getOwnPropertyDescriptor(obj, "prop");
 
-        return propertyDefineCorrect && desc.set === setFunc && verifySetFunc === "overrideData";
-    }
-runTestCase(testcase);
+assert(propertyDefineCorrect, 'propertyDefineCorrect !== true');
+assert.sameValue(desc.set, setFunc, 'desc.set');
+assert.sameValue(verifySetFunc, "overrideData", 'verifySetFunc');
diff --git a/test/built-ins/Object/defineProperty/15.2.3.6-4-479.js b/test/built-ins/Object/defineProperty/15.2.3.6-4-479.js
index d15251c9b5b8cba68eff6d9ccd8d752f20f6b31e..8faf0c6c133018293d6bdcc2155f1e62e61e4cf4 100644
--- a/test/built-ins/Object/defineProperty/15.2.3.6-4-479.js
+++ b/test/built-ins/Object/defineProperty/15.2.3.6-4-479.js
@@ -7,10 +7,8 @@ description: >
     ES5 Attributes - property ([[Get]] is undefined, [[Set]] is a
     Function, [[Enumerable]] is false, [[Configurable]] is true) is
     deletable
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
         var obj = {};
 
         var verifySetFunc = "data";
@@ -30,6 +28,6 @@ function testcase() {
 
         delete obj.prop;
 
-        return propertyDefineCorrect && desc.configurable === true && !obj.hasOwnProperty("prop");
-    }
-runTestCase(testcase);
+assert(propertyDefineCorrect, 'propertyDefineCorrect !== true');
+assert.sameValue(desc.configurable, true, 'desc.configurable');
+assert.sameValue(obj.hasOwnProperty("prop"), false, 'obj.hasOwnProperty("prop")');
diff --git a/test/built-ins/Object/defineProperty/15.2.3.6-4-480.js b/test/built-ins/Object/defineProperty/15.2.3.6-4-480.js
index 9cd8a7bc10c9e75faa6bdaa70b89d8f25def8cf4..d3c67c8024412eb2b33931fcc1296023dd8f396b 100644
--- a/test/built-ins/Object/defineProperty/15.2.3.6-4-480.js
+++ b/test/built-ins/Object/defineProperty/15.2.3.6-4-480.js
@@ -8,10 +8,8 @@ description: >
     property ([[Get]] is undefined, [[Set]] is a Function,
     [[Enumerable]] is false, [[Configurable]] is true) to different
     value
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
         var obj = {};
 
         var getFunc = function () {
@@ -40,6 +38,7 @@ function testcase() {
         var result2 = obj.prop === 1001;
         var desc2 = Object.getOwnPropertyDescriptor(obj, "prop");
 
-        return result1 && result2 && typeof desc1.get === "undefined" && desc2.get === getFunc;
-    }
-runTestCase(testcase);
+assert(result1, 'result1 !== true');
+assert(result2, 'result2 !== true');
+assert.sameValue(typeof desc1.get, "undefined", 'typeof desc1.get');
+assert.sameValue(desc2.get, getFunc, 'desc2.get');
diff --git a/test/built-ins/Object/defineProperty/15.2.3.6-4-481.js b/test/built-ins/Object/defineProperty/15.2.3.6-4-481.js
index dba549c6b634cc3c3ac24d2fbf80d275829b27aa..a876dad7eb71f741199cf20f677ee8e4a22c9a90 100644
--- a/test/built-ins/Object/defineProperty/15.2.3.6-4-481.js
+++ b/test/built-ins/Object/defineProperty/15.2.3.6-4-481.js
@@ -8,10 +8,8 @@ description: >
     property ([[Get]] is undefined, [[Set]] is a Function,
     [[Enumerable]] is false, [[Configurable]] is true) to different
     value
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
         var obj = {};
 
         var verifySetFunc = "data";
@@ -34,6 +32,5 @@ function testcase() {
 
         var desc2 = Object.getOwnPropertyDescriptor(obj, "prop");
 
-        return desc1.set === setFunc && typeof desc2.set === "undefined";
-    }
-runTestCase(testcase);
+assert.sameValue(desc1.set, setFunc, 'desc1.set');
+assert.sameValue(typeof desc2.set, "undefined", 'typeof desc2.set');
diff --git a/test/built-ins/Object/defineProperty/15.2.3.6-4-482.js b/test/built-ins/Object/defineProperty/15.2.3.6-4-482.js
index 3c81c784d7224c05ad25dc070a5616f5fc574b31..a0ed01131eee0024ed27fbe697eda7a5f336c9ff 100644
--- a/test/built-ins/Object/defineProperty/15.2.3.6-4-482.js
+++ b/test/built-ins/Object/defineProperty/15.2.3.6-4-482.js
@@ -8,10 +8,8 @@ description: >
     accessor property ([[Get]] is undefined, [[Set]] is a Function,
     [[Enumerable]] is false, [[Configurable]] is true) to different
     value
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
         var obj = {};
 
         var verifySetFunc = "data";
@@ -45,6 +43,7 @@ function testcase() {
             }
         }
 
-        return !result1 && result2 && desc1.enumerable === false && desc2.enumerable === true;
-    }
-runTestCase(testcase);
+assert.sameValue(result1, false, 'result1');
+assert(result2, 'result2 !== true');
+assert.sameValue(desc1.enumerable, false, 'desc1.enumerable');
+assert.sameValue(desc2.enumerable, true, 'desc2.enumerable');
diff --git a/test/built-ins/Object/defineProperty/15.2.3.6-4-484.js b/test/built-ins/Object/defineProperty/15.2.3.6-4-484.js
index 63dd56eafe77c1c11eb6c33909ea37fded288560..92329f3d790a43cc8df98fdf7bbee49ea43353c1 100644
--- a/test/built-ins/Object/defineProperty/15.2.3.6-4-484.js
+++ b/test/built-ins/Object/defineProperty/15.2.3.6-4-484.js
@@ -7,10 +7,8 @@ description: >
     ES5 Attributes - success to update the accessor property ([[Get]]
     is undefined, [[Set]] is a Function, [[Enumerable]] is false,
     [[Configurable]] is true) to a data property
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
         var obj = {};
 
         var verifySetFunc = "data";
@@ -31,6 +29,5 @@ function testcase() {
         });
         var desc2 = Object.getOwnPropertyDescriptor(obj, "prop");
 
-        return desc1.hasOwnProperty("get") && desc2.hasOwnProperty("value");
-    }
-runTestCase(testcase);
+assert(desc1.hasOwnProperty("get"), 'desc1.hasOwnProperty("get") !== true');
+assert(desc2.hasOwnProperty("value"), 'desc2.hasOwnProperty("value") !== true');
diff --git a/test/built-ins/Object/defineProperty/15.2.3.6-4-485.js b/test/built-ins/Object/defineProperty/15.2.3.6-4-485.js
index 6dda9a64e41e2603fafd5e35ec23953d59b23574..2a1a18a85edd5b2cfff5648d8070102bfcdc1ee6 100644
--- a/test/built-ins/Object/defineProperty/15.2.3.6-4-485.js
+++ b/test/built-ins/Object/defineProperty/15.2.3.6-4-485.js
@@ -7,10 +7,8 @@ description: >
     ES5 Attributes - [[Get]] attribute of accessor property ([[Get]]
     is undefined, [[Set]] is a Function, [[Enumerable]] is false,
     [[Configurable]] is false) is undefined
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
         var obj = {};
 
         var verifySetFunc = "data";
@@ -28,6 +26,5 @@ function testcase() {
         var propertyDefineCorrect = obj.hasOwnProperty("prop");
         var desc = Object.getOwnPropertyDescriptor(obj, "prop");
 
-        return propertyDefineCorrect && typeof desc.get === "undefined";
-    }
-runTestCase(testcase);
+assert(propertyDefineCorrect, 'propertyDefineCorrect !== true');
+assert.sameValue(typeof desc.get, "undefined", 'typeof desc.get');
diff --git a/test/built-ins/Object/defineProperty/15.2.3.6-4-486.js b/test/built-ins/Object/defineProperty/15.2.3.6-4-486.js
index d5d4a35c3e23fcafccd72bbd9bd65ae7a65e0b7f..2f5f0e3b065ea9c2462eabcd66c04ea523da8bae 100644
--- a/test/built-ins/Object/defineProperty/15.2.3.6-4-486.js
+++ b/test/built-ins/Object/defineProperty/15.2.3.6-4-486.js
@@ -7,10 +7,8 @@ description: >
     ES5 Attributes - [[Set]] attribute of accessor property ([[Get]]
     is undefined, [[Set]] is a Function, [[Enumerable]] is false,
     [[Configurable]] is false) is the expected function
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
         var obj = {};
 
         var verifySetFunc = "data";
@@ -29,6 +27,6 @@ function testcase() {
         var propertyDefineCorrect = obj.hasOwnProperty("prop");
         var desc = Object.getOwnPropertyDescriptor(obj, "prop");
 
-        return propertyDefineCorrect && desc.set === setFunc && verifySetFunc === "overrideData";
-    }
-runTestCase(testcase);
+assert(propertyDefineCorrect, 'propertyDefineCorrect !== true');
+assert.sameValue(desc.set, setFunc, 'desc.set');
+assert.sameValue(verifySetFunc, "overrideData", 'verifySetFunc');
diff --git a/test/built-ins/Object/defineProperty/15.2.3.6-4-494.js b/test/built-ins/Object/defineProperty/15.2.3.6-4-494.js
index 09fa65ca1653f78c851987d93627b0e58734e6f4..307059771de4b8cf110988356c7bb208178e417c 100644
--- a/test/built-ins/Object/defineProperty/15.2.3.6-4-494.js
+++ b/test/built-ins/Object/defineProperty/15.2.3.6-4-494.js
@@ -7,10 +7,8 @@ description: >
     ES5 Attributes - [[Get]] attribute of accessor property ([[Get]]
     is a Function, [[Set]] is undefined, [[Enumerable]] is true,
     [[Configurable]] is true) is the expected function
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
         var obj = {};
 
         var getFunc = function () {
@@ -27,6 +25,6 @@ function testcase() {
         var propertyDefineCorrect = obj.hasOwnProperty("prop");
         var desc = Object.getOwnPropertyDescriptor(obj, "prop");
 
-        return propertyDefineCorrect && desc.get === getFunc && obj.prop === 1001;
-    }
-runTestCase(testcase);
+assert(propertyDefineCorrect, 'propertyDefineCorrect !== true');
+assert.sameValue(desc.get, getFunc, 'desc.get');
+assert.sameValue(obj.prop, 1001, 'obj.prop');
diff --git a/test/built-ins/Object/defineProperty/15.2.3.6-4-495.js b/test/built-ins/Object/defineProperty/15.2.3.6-4-495.js
index b972b527fad564360223e26ce8c96a3dc761bb42..924720e5e7defbaee15b19974a8b189249da4548 100644
--- a/test/built-ins/Object/defineProperty/15.2.3.6-4-495.js
+++ b/test/built-ins/Object/defineProperty/15.2.3.6-4-495.js
@@ -7,10 +7,8 @@ description: >
     ES5 Attributes - [[Set]] attribute of accessor property ([[Get]]
     is a Function, [[Set]] is undefined, [[Enumerable]] is true,
     [[Configurable]] is true) is undefined
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
         var obj = {};
 
         var getFunc = function () {
@@ -27,6 +25,5 @@ function testcase() {
         var propertyDefineCorrect = obj.hasOwnProperty("prop");
         var desc = Object.getOwnPropertyDescriptor(obj, "prop");
 
-        return propertyDefineCorrect && typeof desc.set === "undefined";
-    }
-runTestCase(testcase);
+assert(propertyDefineCorrect, 'propertyDefineCorrect !== true');
+assert.sameValue(typeof desc.set, "undefined", 'typeof desc.set');
diff --git a/test/built-ins/Object/defineProperty/15.2.3.6-4-497.js b/test/built-ins/Object/defineProperty/15.2.3.6-4-497.js
index dbdf0613571196ba3b68174e3cf71868aae38c6a..f2079be323c8dde66114f5c69d75feae10e4c947 100644
--- a/test/built-ins/Object/defineProperty/15.2.3.6-4-497.js
+++ b/test/built-ins/Object/defineProperty/15.2.3.6-4-497.js
@@ -7,10 +7,8 @@ description: >
     ES5 Attributes - property ([[Get]] is a Function, [[Set]] is
     undefined, [[Enumerable]] is true, [[Configurable]] is true) is
     deletable
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
         var obj = {};
 
         var getFunc = function () {
@@ -29,6 +27,6 @@ function testcase() {
 
         delete obj.prop;
 
-        return propertyDefineCorrect && desc.configurable === true && !obj.hasOwnProperty("prop");
-    }
-runTestCase(testcase);
+assert(propertyDefineCorrect, 'propertyDefineCorrect !== true');
+assert.sameValue(desc.configurable, true, 'desc.configurable');
+assert.sameValue(obj.hasOwnProperty("prop"), false, 'obj.hasOwnProperty("prop")');
diff --git a/test/built-ins/Object/defineProperty/15.2.3.6-4-498.js b/test/built-ins/Object/defineProperty/15.2.3.6-4-498.js
index f5ec0fd22389c124ff0c3950ab1ed8fb7e7a55f1..2289b4393d81e09b6ee5b41e968a9cfdf7ee3112 100644
--- a/test/built-ins/Object/defineProperty/15.2.3.6-4-498.js
+++ b/test/built-ins/Object/defineProperty/15.2.3.6-4-498.js
@@ -8,10 +8,8 @@ description: >
     property ([[Get]] is a Function, [[Set]] is undefined,
     [[Enumerable]] is true, [[Configurable]] is true) to different
     value
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
         var obj = {};
         var getFunc = function () {
             return 1001;
@@ -34,6 +32,7 @@ function testcase() {
         var result2 = typeof obj.prop === "undefined";
         var desc2 = Object.getOwnPropertyDescriptor(obj, "prop");
 
-        return result1 && result2 && desc1.get === getFunc && typeof desc2.get === "undefined";
-    }
-runTestCase(testcase);
+assert(result1, 'result1 !== true');
+assert(result2, 'result2 !== true');
+assert.sameValue(desc1.get, getFunc, 'desc1.get');
+assert.sameValue(typeof desc2.get, "undefined", 'typeof desc2.get');
diff --git a/test/built-ins/Object/defineProperty/15.2.3.6-4-499.js b/test/built-ins/Object/defineProperty/15.2.3.6-4-499.js
index d7f753530192151800814bcfbd6c446caa796186..d07f5281043fea2871ba69cba82bda13936f845c 100644
--- a/test/built-ins/Object/defineProperty/15.2.3.6-4-499.js
+++ b/test/built-ins/Object/defineProperty/15.2.3.6-4-499.js
@@ -8,10 +8,8 @@ description: >
     property ([[Get]] is a Function, [[Set]] is undefined,
     [[Enumerable]] is true, [[Configurable]] is true) to different
     value
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
         var obj = {};
 
         var getFunc = function () {
@@ -38,6 +36,7 @@ function testcase() {
 
         var desc2 = Object.getOwnPropertyDescriptor(obj, "prop");
         obj.prop = "overrideData";
-        return typeof desc1.set === "undefined" && desc2.set === setFunc && verifySetFunc === "overrideData";
-    }
-runTestCase(testcase);
+
+assert.sameValue(typeof desc1.set, "undefined", 'typeof desc1.set');
+assert.sameValue(desc2.set, setFunc, 'desc2.set');
+assert.sameValue(verifySetFunc, "overrideData", 'verifySetFunc');
diff --git a/test/built-ins/Object/defineProperty/15.2.3.6-4-5.js b/test/built-ins/Object/defineProperty/15.2.3.6-4-5.js
index ae1760003ae099a70cad992559d0c6fded3e107e..4d519e4fa0c75a4d7470e566a7ddd179b4b8d264 100644
--- a/test/built-ins/Object/defineProperty/15.2.3.6-4-5.js
+++ b/test/built-ins/Object/defineProperty/15.2.3.6-4-5.js
@@ -11,10 +11,8 @@ es5id: 15.2.3.6-4-5
 description: >
     Object.defineProperty is no-op if current and desc are the same
     data desc
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
   function sameDataDescriptorValues(d1, d2) {
     return (d1.value === d2.value &&
             d1.enumerable === d2.enumerable &&
@@ -39,8 +37,4 @@ function testcase() {
 
   var d2 = Object.getOwnPropertyDescriptor(o, "foo"); 
 
-  if (sameDataDescriptorValues(d1, d2) === true) {
-    return true;
-  }
- }
-runTestCase(testcase);
+assert.sameValue(sameDataDescriptorValues(d1, d2), true, 'sameDataDescriptorValues(d1, d2)');
diff --git a/test/built-ins/Object/defineProperty/15.2.3.6-4-500.js b/test/built-ins/Object/defineProperty/15.2.3.6-4-500.js
index 000de47426e5835fcf2d53d79107c90b1da4f72b..ed20f1ac788e7be6179880dcdc751792bd71b24b 100644
--- a/test/built-ins/Object/defineProperty/15.2.3.6-4-500.js
+++ b/test/built-ins/Object/defineProperty/15.2.3.6-4-500.js
@@ -8,10 +8,8 @@ description: >
     accessor property ([[Get]] is  Function, [[Set]] is undefined,
     [[Enumerable]] is true, [[Configurable]] is true) to different
     value
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
         var obj = {};
 
         var getFunc = function () {
@@ -43,6 +41,7 @@ function testcase() {
             }
         }
 
-        return result1 && !result2 && desc1.enumerable === true && desc2.enumerable === false;
-    }
-runTestCase(testcase);
+assert(result1, 'result1 !== true');
+assert.sameValue(result2, false, 'result2');
+assert.sameValue(desc1.enumerable, true, 'desc1.enumerable');
+assert.sameValue(desc2.enumerable, false, 'desc2.enumerable');
diff --git a/test/built-ins/Object/defineProperty/15.2.3.6-4-502.js b/test/built-ins/Object/defineProperty/15.2.3.6-4-502.js
index 7318fb4b65b62ef1a3011fffae01a9421927845a..7a2ef983994e7635a78cb54abc457af0f5416ee2 100644
--- a/test/built-ins/Object/defineProperty/15.2.3.6-4-502.js
+++ b/test/built-ins/Object/defineProperty/15.2.3.6-4-502.js
@@ -7,10 +7,8 @@ description: >
     ES5 Attributes - success to update the accessor property ([[Get]]
     is a Function, [[Set]] is undefined, [[Enumerable]] is true,
     [[Configurable]] is true) to a data property
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
         var obj = {};
 
         var getFunc = function () {
@@ -30,6 +28,5 @@ function testcase() {
         });
         var desc2 = Object.getOwnPropertyDescriptor(obj, "prop");
 
-        return desc1.hasOwnProperty("get") && desc2.hasOwnProperty("value");
-    }
-runTestCase(testcase);
+assert(desc1.hasOwnProperty("get"), 'desc1.hasOwnProperty("get") !== true');
+assert(desc2.hasOwnProperty("value"), 'desc2.hasOwnProperty("value") !== true');
diff --git a/test/built-ins/Object/defineProperty/15.2.3.6-4-503.js b/test/built-ins/Object/defineProperty/15.2.3.6-4-503.js
index 75b213af16feca6fb4f99344650c60bf9849a040..76320b7049897bf9797ad3601ad25893b9e6d4be 100644
--- a/test/built-ins/Object/defineProperty/15.2.3.6-4-503.js
+++ b/test/built-ins/Object/defineProperty/15.2.3.6-4-503.js
@@ -7,10 +7,8 @@ description: >
     ES5 Attributes - [[Get]] attribute of accessor property ([[Get]]
     is a Function, [[Set]] is undefined, [[Enumerable]] is true,
     [[Configurable]] is false) is the expected function
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
         var obj = {};
 
         var getFunc = function () {
@@ -27,6 +25,6 @@ function testcase() {
         var propertyDefineCorrect = obj.hasOwnProperty("prop");
         var desc = Object.getOwnPropertyDescriptor(obj, "prop");
 
-        return propertyDefineCorrect && desc.get === getFunc && obj.prop === 1001;
-    }
-runTestCase(testcase);
+assert(propertyDefineCorrect, 'propertyDefineCorrect !== true');
+assert.sameValue(desc.get, getFunc, 'desc.get');
+assert.sameValue(obj.prop, 1001, 'obj.prop');
diff --git a/test/built-ins/Object/defineProperty/15.2.3.6-4-504.js b/test/built-ins/Object/defineProperty/15.2.3.6-4-504.js
index a2dae491d518327c0aa65a8e8e3cd7759257266a..f1534efb079c87d472375544b7bd1882380000d6 100644
--- a/test/built-ins/Object/defineProperty/15.2.3.6-4-504.js
+++ b/test/built-ins/Object/defineProperty/15.2.3.6-4-504.js
@@ -7,10 +7,8 @@ description: >
     ES5 Attributes - [[Set]] attribute of accessor property ([[Get]]
     is a Function, [[Set]] is undefined, [[Enumerable]] is true,
     [[Configurable]] is false) is undefined
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
         var obj = {};
 
         var getFunc = function () {
@@ -27,6 +25,5 @@ function testcase() {
         var propertyDefineCorrect = obj.hasOwnProperty("prop");
         var desc = Object.getOwnPropertyDescriptor(obj, "prop");
 
-        return propertyDefineCorrect && typeof desc.set === "undefined";
-    }
-runTestCase(testcase);
+assert(propertyDefineCorrect, 'propertyDefineCorrect !== true');
+assert.sameValue(typeof desc.set, "undefined", 'typeof desc.set');
diff --git a/test/built-ins/Object/defineProperty/15.2.3.6-4-512.js b/test/built-ins/Object/defineProperty/15.2.3.6-4-512.js
index 5280b06c4f444947c785dd78d3c032a16c0d5c15..c7627d864c1f68d04e154517c4d744fe3240acf6 100644
--- a/test/built-ins/Object/defineProperty/15.2.3.6-4-512.js
+++ b/test/built-ins/Object/defineProperty/15.2.3.6-4-512.js
@@ -7,10 +7,8 @@ description: >
     ES5 Attributes - [[Get]] attribute of accessor property ([[Get]]
     is a Function, [[Set]] is undefined, [[Enumerable]] is false,
     [[Configurable]] is true) is the expected function
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
         var obj = {};
 
         var getFunc = function () {
@@ -27,6 +25,6 @@ function testcase() {
         var propertyDefineCorrect = obj.hasOwnProperty("prop");
         var desc = Object.getOwnPropertyDescriptor(obj, "prop");
 
-        return propertyDefineCorrect && desc.get === getFunc && obj.prop === 1001;
-    }
-runTestCase(testcase);
+assert(propertyDefineCorrect, 'propertyDefineCorrect !== true');
+assert.sameValue(desc.get, getFunc, 'desc.get');
+assert.sameValue(obj.prop, 1001, 'obj.prop');
diff --git a/test/built-ins/Object/defineProperty/15.2.3.6-4-513.js b/test/built-ins/Object/defineProperty/15.2.3.6-4-513.js
index 54d430ebf9f8808477c0a24bb22aedb5b846255b..f44cb451a9cf4723d9b7e0f7f51774c7901973fc 100644
--- a/test/built-ins/Object/defineProperty/15.2.3.6-4-513.js
+++ b/test/built-ins/Object/defineProperty/15.2.3.6-4-513.js
@@ -7,10 +7,8 @@ description: >
     ES5 Attributes - [[Set]] attribute of accessor property ([[Get]]
     is a Function, [[Set]] is undefined, [[Enumerable]] is false,
     [[Configurable]] is true) is undefined
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
         var obj = {};
 
         var getFunc = function () {
@@ -27,6 +25,5 @@ function testcase() {
         var propertyDefineCorrect = obj.hasOwnProperty("prop");
         var desc = Object.getOwnPropertyDescriptor(obj, "prop");
 
-        return propertyDefineCorrect && typeof desc.set === "undefined";
-    }
-runTestCase(testcase);
+assert(propertyDefineCorrect, 'propertyDefineCorrect !== true');
+assert.sameValue(typeof desc.set, "undefined", 'typeof desc.set');
diff --git a/test/built-ins/Object/defineProperty/15.2.3.6-4-515.js b/test/built-ins/Object/defineProperty/15.2.3.6-4-515.js
index 815fc4b4077b66cd4b834d7092de26d429f874ff..b87f8abd502b1d4e27811760ddc70ffec28e895c 100644
--- a/test/built-ins/Object/defineProperty/15.2.3.6-4-515.js
+++ b/test/built-ins/Object/defineProperty/15.2.3.6-4-515.js
@@ -7,10 +7,8 @@ description: >
     ES5 Attributes - property ([[Get]] is a Function, [[Set]] is
     undefined, [[Enumerable]] is false, [[Configurable]] is true) is
     deletable
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
         var obj = {};
 
         var getFunc = function () {
@@ -29,6 +27,6 @@ function testcase() {
 
         delete obj.prop;
 
-        return propertyDefineCorrect && desc.configurable === true && !obj.hasOwnProperty("prop");
-    }
-runTestCase(testcase);
+assert(propertyDefineCorrect, 'propertyDefineCorrect !== true');
+assert.sameValue(desc.configurable, true, 'desc.configurable');
+assert.sameValue(obj.hasOwnProperty("prop"), false, 'obj.hasOwnProperty("prop")');
diff --git a/test/built-ins/Object/defineProperty/15.2.3.6-4-516.js b/test/built-ins/Object/defineProperty/15.2.3.6-4-516.js
index e2c1ce01a41785477e18296ddf0535f8825042e0..5232041098ab70df0fe0e8669aa8196893c04fce 100644
--- a/test/built-ins/Object/defineProperty/15.2.3.6-4-516.js
+++ b/test/built-ins/Object/defineProperty/15.2.3.6-4-516.js
@@ -8,10 +8,8 @@ description: >
     property ([[Get]] is a Function, [[Set]] is undefined,
     [[Enumerable]] is false, [[Configurable]] is true) to different
     value
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
         var obj = {};
         var getFunc = function () {
             return 1001;
@@ -34,6 +32,7 @@ function testcase() {
         var result2 = typeof obj.prop === "undefined";
         var desc2 = Object.getOwnPropertyDescriptor(obj, "prop");
 
-        return result1 && result2 && desc1.get === getFunc && typeof desc2.get === "undefined";
-    }
-runTestCase(testcase);
+assert(result1, 'result1 !== true');
+assert(result2, 'result2 !== true');
+assert.sameValue(desc1.get, getFunc, 'desc1.get');
+assert.sameValue(typeof desc2.get, "undefined", 'typeof desc2.get');
diff --git a/test/built-ins/Object/defineProperty/15.2.3.6-4-517.js b/test/built-ins/Object/defineProperty/15.2.3.6-4-517.js
index 2eab38ef2f5a1b29efbeb64545d2739cf790bc99..d47836e41fa1debc11968ac2fdb2999ca18a22a9 100644
--- a/test/built-ins/Object/defineProperty/15.2.3.6-4-517.js
+++ b/test/built-ins/Object/defineProperty/15.2.3.6-4-517.js
@@ -8,10 +8,8 @@ description: >
     property ([[Get]] is a Function, [[Set]] is undefined,
     [[Enumerable]] is false, [[Configurable]] is true) to different
     value
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
         var obj = {};
 
         var getFunc = function () {
@@ -40,6 +38,7 @@ function testcase() {
         obj.prop = "overrideData";
         var desc2 = Object.getOwnPropertyDescriptor(obj, "prop");
 
-        return typeof desc1.set === "undefined" && propertyDefineCorrect && desc2.set === setFunc && verifySetFunc === "overrideData";
-    }
-runTestCase(testcase);
+assert.sameValue(typeof desc1.set, "undefined", 'typeof desc1.set');
+assert(propertyDefineCorrect, 'propertyDefineCorrect !== true');
+assert.sameValue(desc2.set, setFunc, 'desc2.set');
+assert.sameValue(verifySetFunc, "overrideData", 'verifySetFunc');
diff --git a/test/built-ins/Object/defineProperty/15.2.3.6-4-518.js b/test/built-ins/Object/defineProperty/15.2.3.6-4-518.js
index 322f5c331f0e9b980483871aa3f9b5201d23cd22..bbf3dbf0c525f2cf24a6045008c9c4e6f798da63 100644
--- a/test/built-ins/Object/defineProperty/15.2.3.6-4-518.js
+++ b/test/built-ins/Object/defineProperty/15.2.3.6-4-518.js
@@ -8,10 +8,8 @@ description: >
     accessor property ([[Get]] is a Function, [[Set]] is undefined,
     [[Enumerable]] is false, [[Configurable]] is true) to different
     value
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
         var obj = {};
 
         var getFunc = function () {
@@ -43,6 +41,7 @@ function testcase() {
             }
         }
 
-        return !result1 && result2 && desc1.enumerable === false && desc2.enumerable === true;
-    }
-runTestCase(testcase);
+assert.sameValue(result1, false, 'result1');
+assert(result2, 'result2 !== true');
+assert.sameValue(desc1.enumerable, false, 'desc1.enumerable');
+assert.sameValue(desc2.enumerable, true, 'desc2.enumerable');
diff --git a/test/built-ins/Object/defineProperty/15.2.3.6-4-520.js b/test/built-ins/Object/defineProperty/15.2.3.6-4-520.js
index e37e0c3b19962a0de088292b1939bcfb6a1c2364..166779005a1085934cfe968f7b536ad4db448156 100644
--- a/test/built-ins/Object/defineProperty/15.2.3.6-4-520.js
+++ b/test/built-ins/Object/defineProperty/15.2.3.6-4-520.js
@@ -7,10 +7,8 @@ description: >
     ES5 Attributes - success to update the accessor property ([[Get]]
     is a Function, [[Set]] is undefined, [[Enumerable]] is false,
     [[Configurable]] is true) to a data property
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
         var obj = {};
 
         var getFunc = function () {
@@ -30,6 +28,5 @@ function testcase() {
         });
         var desc2 = Object.getOwnPropertyDescriptor(obj, "prop");
 
-        return desc1.hasOwnProperty("get") && desc2.hasOwnProperty("value");
-    }
-runTestCase(testcase);
+assert(desc1.hasOwnProperty("get"), 'desc1.hasOwnProperty("get") !== true');
+assert(desc2.hasOwnProperty("value"), 'desc2.hasOwnProperty("value") !== true');
diff --git a/test/built-ins/Object/defineProperty/15.2.3.6-4-521.js b/test/built-ins/Object/defineProperty/15.2.3.6-4-521.js
index e145f2622e6afac5622a2c8ad0ed8ed072f6a0e9..26ed78b257e7e07508729c7300f828b93fe4e76b 100644
--- a/test/built-ins/Object/defineProperty/15.2.3.6-4-521.js
+++ b/test/built-ins/Object/defineProperty/15.2.3.6-4-521.js
@@ -7,10 +7,8 @@ description: >
     ES5 Attributes - [[Get]] attribute of accessor property ([[Get]]
     is a Function, [[Set]] is undefined, [[Enumerable]] is false,
     [[Configurable]] is false) is the expected function
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
         var obj = {};
 
         var getFunc = function () {
@@ -27,6 +25,6 @@ function testcase() {
         var propertyDefineCorrect = obj.hasOwnProperty("prop");
         var desc = Object.getOwnPropertyDescriptor(obj, "prop");
 
-        return propertyDefineCorrect && desc.get === getFunc && obj.prop === 1001;
-    }
-runTestCase(testcase);
+assert(propertyDefineCorrect, 'propertyDefineCorrect !== true');
+assert.sameValue(desc.get, getFunc, 'desc.get');
+assert.sameValue(obj.prop, 1001, 'obj.prop');
diff --git a/test/built-ins/Object/defineProperty/15.2.3.6-4-522.js b/test/built-ins/Object/defineProperty/15.2.3.6-4-522.js
index 4874b59445ea56fa4c9c73d9cc46de9bc153f6e3..7b4a2b78a1210972f0cc6a2bc522812bc34e1ce5 100644
--- a/test/built-ins/Object/defineProperty/15.2.3.6-4-522.js
+++ b/test/built-ins/Object/defineProperty/15.2.3.6-4-522.js
@@ -7,10 +7,8 @@ description: >
     ES5 Attributes - [[Set]] attribute of accessor property ([[Get]]
     is a Function, [[Set]] is undefined, [[Enumerable]] is false,
     [[Configurable]] is false) is undefined
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
         var obj = {};
 
         var getFunc = function () {
@@ -27,6 +25,5 @@ function testcase() {
         var propertyDefineCorrect = obj.hasOwnProperty("prop");
         var desc = Object.getOwnPropertyDescriptor(obj, "prop");
 
-        return propertyDefineCorrect && typeof desc.set === "undefined";
-    }
-runTestCase(testcase);
+assert(propertyDefineCorrect, 'propertyDefineCorrect !== true');
+assert.sameValue(typeof desc.set, "undefined", 'typeof desc.set');
diff --git a/test/built-ins/Object/defineProperty/15.2.3.6-4-530.js b/test/built-ins/Object/defineProperty/15.2.3.6-4-530.js
index 735130c6dfa4d50d13d11ce93a3d33a7a1d2c8f3..794b0bdc744acdcd0a6edb9ae278f4bea50ad770 100644
--- a/test/built-ins/Object/defineProperty/15.2.3.6-4-530.js
+++ b/test/built-ins/Object/defineProperty/15.2.3.6-4-530.js
@@ -7,10 +7,8 @@ description: >
     ES5 Attributes - [[Get]] attribute of accessor property ([[Get]]
     is a Function, [[Set]] is a Function, [[Enumerable]] is true,
     [[Configurable]] is true) is the expected function
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
         var obj = {};
 
         var getFunc = function () {
@@ -32,6 +30,6 @@ function testcase() {
         var propertyDefineCorrect = obj.hasOwnProperty("prop");
         var desc = Object.getOwnPropertyDescriptor(obj, "prop");
 
-        return propertyDefineCorrect && desc.get === getFunc && obj.prop === 1001;
-    }
-runTestCase(testcase);
+assert(propertyDefineCorrect, 'propertyDefineCorrect !== true');
+assert.sameValue(desc.get, getFunc, 'desc.get');
+assert.sameValue(obj.prop, 1001, 'obj.prop');
diff --git a/test/built-ins/Object/defineProperty/15.2.3.6-4-531-15.js b/test/built-ins/Object/defineProperty/15.2.3.6-4-531-15.js
index 3a0153c3749a80ba184ec943471af090e5652aa7..eec71d69487c367d6b2ca78fbecb8f86d74056b2 100644
--- a/test/built-ins/Object/defineProperty/15.2.3.6-4-531-15.js
+++ b/test/built-ins/Object/defineProperty/15.2.3.6-4-531-15.js
@@ -7,10 +7,8 @@ description: >
     ES5 Attributes - Updating a named accessor property 'P' using
     simple assignment is successful, 'A' is an Array object (8.12.5
     step 5.b)
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
         var obj = [];
 
         var verifySetFunc = "data";
@@ -32,6 +30,6 @@ function testcase() {
         var propertyDefineCorrect = obj.hasOwnProperty("prop");
         var desc = Object.getOwnPropertyDescriptor(obj, "prop");
 
-        return propertyDefineCorrect && desc.set === setFunc && obj.prop === "overrideData";
-    }
-runTestCase(testcase);
+assert(propertyDefineCorrect, 'propertyDefineCorrect !== true');
+assert.sameValue(desc.set, setFunc, 'desc.set');
+assert.sameValue(obj.prop, "overrideData", 'obj.prop');
diff --git a/test/built-ins/Object/defineProperty/15.2.3.6-4-531-16.js b/test/built-ins/Object/defineProperty/15.2.3.6-4-531-16.js
index 4e0b37710fc644136250889d491b5968fdbedcae..18edd69aec9414308688a9be1ddd96df014cbe1b 100644
--- a/test/built-ins/Object/defineProperty/15.2.3.6-4-531-16.js
+++ b/test/built-ins/Object/defineProperty/15.2.3.6-4-531-16.js
@@ -6,10 +6,8 @@ es5id: 15.2.3.6-4-531-16
 description: >
     ES5 Attributes - Updating an indexed accessor property 'P' using
     simple assignment, 'O' is an Arguments object (8.12.5 step 5.b)
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
         var obj = (function () {
             return arguments;
         }());
@@ -33,6 +31,6 @@ function testcase() {
         var propertyDefineCorrect = obj.hasOwnProperty("0");
         var desc = Object.getOwnPropertyDescriptor(obj, "0");
 
-        return propertyDefineCorrect && desc.set === setFunc && obj[0] === "overrideData";
-    }
-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.js b/test/built-ins/Object/defineProperty/15.2.3.6-4-531.js
index 914744482fa687d199fd26335a82a77e2cc62b9d..dcb124023f31bb3f549920d1aa32f0786ee53976 100644
--- a/test/built-ins/Object/defineProperty/15.2.3.6-4-531.js
+++ b/test/built-ins/Object/defineProperty/15.2.3.6-4-531.js
@@ -7,10 +7,8 @@ description: >
     ES5 Attributes - [[Set]] attribute of accessor property ([[Get]]
     is a Function, [[Set]] is a Function, [[Enumerable]] is true,
     [[Configurable]] is true) is the expected function
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
         var obj = {};
 
         var getFunc = function () {
@@ -33,6 +31,6 @@ function testcase() {
         var propertyDefineCorrect = obj.hasOwnProperty("prop");
         var desc = Object.getOwnPropertyDescriptor(obj, "prop");
 
-        return propertyDefineCorrect && desc.set === setFunc && verifySetFunc === "overrideData";
-    }
-runTestCase(testcase);
+assert(propertyDefineCorrect, 'propertyDefineCorrect !== true');
+assert.sameValue(desc.set, setFunc, 'desc.set');
+assert.sameValue(verifySetFunc, "overrideData", 'verifySetFunc');
diff --git a/test/built-ins/Object/defineProperty/15.2.3.6-4-533.js b/test/built-ins/Object/defineProperty/15.2.3.6-4-533.js
index a09d53a9cc7759f422ad4e133d1c64ae00683e13..7c26ccedbac586e2f45c555e53597ddb70c9c8ee 100644
--- a/test/built-ins/Object/defineProperty/15.2.3.6-4-533.js
+++ b/test/built-ins/Object/defineProperty/15.2.3.6-4-533.js
@@ -7,10 +7,8 @@ description: >
     ES5 Attributes - property ([[Get]] is a Function, [[Set]] is a
     Function, [[Enumerable]] is true, [[Configurable]] is true) is
     deletable
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
         var obj = {};
 
         var getFunc = function () {
@@ -34,6 +32,6 @@ function testcase() {
 
         delete obj.prop;
 
-        return propertyDefineCorrect && desc.configurable === true && !obj.hasOwnProperty("prop");
-    }
-runTestCase(testcase);
+assert(propertyDefineCorrect, 'propertyDefineCorrect !== true');
+assert.sameValue(desc.configurable, true, 'desc.configurable');
+assert.sameValue(obj.hasOwnProperty("prop"), false, 'obj.hasOwnProperty("prop")');
diff --git a/test/built-ins/Object/defineProperty/15.2.3.6-4-534.js b/test/built-ins/Object/defineProperty/15.2.3.6-4-534.js
index 7c226448e6eeb174637252cd39ec22e892031162..c6acdc49d9e2db7fc0f5677100ff1dcfff595059 100644
--- a/test/built-ins/Object/defineProperty/15.2.3.6-4-534.js
+++ b/test/built-ins/Object/defineProperty/15.2.3.6-4-534.js
@@ -8,10 +8,8 @@ description: >
     property ([[Get]] is a Function, [[Set]] is a Function,
     [[Enumerable]] is true, [[Configurable]] is true) to different
     value
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
         var obj = {};
 
         var getFunc = function () {
@@ -40,6 +38,7 @@ function testcase() {
         var result2 = typeof obj.prop === "undefined";
         var desc2 = Object.getOwnPropertyDescriptor(obj, "prop");
 
-        return result1 && result2 && desc1.get === getFunc && typeof desc2.get === "undefined";
-    }
-runTestCase(testcase);
+assert(result1, 'result1 !== true');
+assert(result2, 'result2 !== true');
+assert.sameValue(desc1.get, getFunc, 'desc1.get');
+assert.sameValue(typeof desc2.get, "undefined", 'typeof desc2.get');
diff --git a/test/built-ins/Object/defineProperty/15.2.3.6-4-535.js b/test/built-ins/Object/defineProperty/15.2.3.6-4-535.js
index e07b16f2a52c9715873f44ce2bae9b145238a127..7235c3f789f1595cff373580d847039b76c373ce 100644
--- a/test/built-ins/Object/defineProperty/15.2.3.6-4-535.js
+++ b/test/built-ins/Object/defineProperty/15.2.3.6-4-535.js
@@ -8,10 +8,8 @@ description: >
     property ([[Get]] is a Function, [[Set]] is a Function,
     [[Enumerable]] is true, [[Configurable]] is true) to different
     value
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
         var obj = {};
 
         var getFunc = function () {
@@ -38,6 +36,5 @@ function testcase() {
 
         var desc2 = Object.getOwnPropertyDescriptor(obj, "prop");
 
-        return desc1.set === setFunc && typeof desc2.set === "undefined";
-    }
-runTestCase(testcase);
+assert.sameValue(desc1.set, setFunc, 'desc1.set');
+assert.sameValue(typeof desc2.set, "undefined", 'typeof desc2.set');
diff --git a/test/built-ins/Object/defineProperty/15.2.3.6-4-536.js b/test/built-ins/Object/defineProperty/15.2.3.6-4-536.js
index c3bee8e3c1b8b0f6b24615e988ca10e85f68bce9..f3ff2e36a3cf73e289ba9517d053d2409b7c0d86 100644
--- a/test/built-ins/Object/defineProperty/15.2.3.6-4-536.js
+++ b/test/built-ins/Object/defineProperty/15.2.3.6-4-536.js
@@ -8,10 +8,8 @@ description: >
     accessor property ([[Get]] is a Function, [[Set]] is a Function,
     [[Enumerable]] is true, [[Configurable]] is true) to different
     value
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
         var obj = {};
 
         var getFunc = function () {
@@ -48,6 +46,7 @@ function testcase() {
             }
         }
 
-        return result1 && !result2 && desc1.enumerable === true && desc2.enumerable === false;
-    }
-runTestCase(testcase);
+assert(result1, 'result1 !== true');
+assert.sameValue(result2, false, 'result2');
+assert.sameValue(desc1.enumerable, true, 'desc1.enumerable');
+assert.sameValue(desc2.enumerable, false, 'desc2.enumerable');
diff --git a/test/built-ins/Object/defineProperty/15.2.3.6-4-539.js b/test/built-ins/Object/defineProperty/15.2.3.6-4-539.js
index be71e264165834a0297f445ba796afb00741a908..6d06b7a1f66889d0658472bcac00207b786f085b 100644
--- a/test/built-ins/Object/defineProperty/15.2.3.6-4-539.js
+++ b/test/built-ins/Object/defineProperty/15.2.3.6-4-539.js
@@ -7,10 +7,8 @@ description: >
     ES5 Attributes - [[Get]] attribute of accessor property ([[Get]]
     is a Function, [[Set]] is a Function, [[Enumerable]] is true,
     [[Configurable]] is false) is the expected function
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
         var obj = {};
 
         var getFunc = function () {
@@ -32,6 +30,6 @@ function testcase() {
         var propertyDefineCorrect = obj.hasOwnProperty("prop");
         var desc = Object.getOwnPropertyDescriptor(obj, "prop");
 
-        return propertyDefineCorrect && desc.get === getFunc && obj.prop === 1001;
-    }
-runTestCase(testcase);
+assert(propertyDefineCorrect, 'propertyDefineCorrect !== true');
+assert.sameValue(desc.get, getFunc, 'desc.get');
+assert.sameValue(obj.prop, 1001, 'obj.prop');
diff --git a/test/built-ins/Object/defineProperty/15.2.3.6-4-540-10.js b/test/built-ins/Object/defineProperty/15.2.3.6-4-540-10.js
index 27890310ea11b270f69f5fad307badecc58ddb56..42279065bc687f354e13ed56e4dfdb54457df119 100644
--- a/test/built-ins/Object/defineProperty/15.2.3.6-4-540-10.js
+++ b/test/built-ins/Object/defineProperty/15.2.3.6-4-540-10.js
@@ -7,10 +7,8 @@ description: >
     ES5 Attributes - Updating an indexed accessor property 'P' using
     simple assignment is successful, 'O' is an Arguments object
     (8.12.5 step 5.b)
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
         var obj = (function () {
             return arguments;
         }());
@@ -35,6 +33,6 @@ function testcase() {
         var propertyDefineCorrect = obj.hasOwnProperty("0");
         var desc = Object.getOwnPropertyDescriptor(obj, "0");
 
-        return propertyDefineCorrect && desc.set === setFunc && obj.verifySetFunc === "overrideData";
-    }
-runTestCase(testcase);
+assert(propertyDefineCorrect, 'propertyDefineCorrect !== true');
+assert.sameValue(desc.set, setFunc, 'desc.set');
+assert.sameValue(obj.verifySetFunc, "overrideData", 'obj.verifySetFunc');
diff --git a/test/built-ins/Object/defineProperty/15.2.3.6-4-540-4.js b/test/built-ins/Object/defineProperty/15.2.3.6-4-540-4.js
index fd639efc4c004d62be799017be87a48102bbcb03..7db3da87696d8a48c3e140a5997c146a65550bb7 100644
--- a/test/built-ins/Object/defineProperty/15.2.3.6-4-540-4.js
+++ b/test/built-ins/Object/defineProperty/15.2.3.6-4-540-4.js
@@ -7,10 +7,8 @@ description: >
     ES5 Attributes - Updating an indexed accessor property 'P' using
     simple assignment is successful, 'A' is an Array object (8.12.5
     step 5.b)
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
         var obj = [];
 
         obj.verifySetFunc = "data";
@@ -33,6 +31,6 @@ function testcase() {
         var propertyDefineCorrect = obj.hasOwnProperty("0");
         var desc = Object.getOwnPropertyDescriptor(obj, "0");
 
-        return propertyDefineCorrect && desc.set === setFunc && obj.verifySetFunc === "overrideData";
-    }
-runTestCase(testcase);
+assert(propertyDefineCorrect, 'propertyDefineCorrect !== true');
+assert.sameValue(desc.set, setFunc, 'desc.set');
+assert.sameValue(obj.verifySetFunc, "overrideData", 'obj.verifySetFunc');
diff --git a/test/built-ins/Object/defineProperty/15.2.3.6-4-540-5.js b/test/built-ins/Object/defineProperty/15.2.3.6-4-540-5.js
index 9c3ab6420514188855497c1a8be57da3d48a867b..04d92161400894e93b4c6397ef14fcfde1cb2d6e 100644
--- a/test/built-ins/Object/defineProperty/15.2.3.6-4-540-5.js
+++ b/test/built-ins/Object/defineProperty/15.2.3.6-4-540-5.js
@@ -7,10 +7,8 @@ description: >
     ES5 Attributes - Updating a named accessor property 'P' using
     simple assignment is successful, 'O' is an Arguments object
     (8.12.5 step 5.b)
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
         var obj = (function () {
             return arguments;
         }());
@@ -35,6 +33,6 @@ function testcase() {
         var propertyDefineCorrect = obj.hasOwnProperty("prop");
         var desc = Object.getOwnPropertyDescriptor(obj, "prop");
 
-        return propertyDefineCorrect && desc.set === setFunc && obj.verifySetFunc === "overrideData";
-    }
-runTestCase(testcase);
+assert(propertyDefineCorrect, 'propertyDefineCorrect !== true');
+assert.sameValue(desc.set, setFunc, 'desc.set');
+assert.sameValue(obj.verifySetFunc, "overrideData", 'obj.verifySetFunc');
diff --git a/test/built-ins/Object/defineProperty/15.2.3.6-4-540-9.js b/test/built-ins/Object/defineProperty/15.2.3.6-4-540-9.js
index 664ffecda8cceb8b2667016f61efba49fa9a3505..b2354b2e195478619ec1f777d2ee0bb263a9ee43 100644
--- a/test/built-ins/Object/defineProperty/15.2.3.6-4-540-9.js
+++ b/test/built-ins/Object/defineProperty/15.2.3.6-4-540-9.js
@@ -7,10 +7,8 @@ description: >
     ES5 Attributes - Updating a named accessor property 'P' using
     simple assignment is successful, 'A' is an Array object (8.12.5
     step 5.b)
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
         var obj = [];
 
         obj.verifySetFunc = "data";
@@ -33,6 +31,6 @@ function testcase() {
         var propertyDefineCorrect = obj.hasOwnProperty("prop");
         var desc = Object.getOwnPropertyDescriptor(obj, "prop");
 
-        return propertyDefineCorrect && desc.set === setFunc && obj.verifySetFunc === "overrideData";
-    }
-runTestCase(testcase);
+assert(propertyDefineCorrect, 'propertyDefineCorrect !== true');
+assert.sameValue(desc.set, setFunc, 'desc.set');
+assert.sameValue(obj.verifySetFunc, "overrideData", 'obj.verifySetFunc');
diff --git a/test/built-ins/Object/defineProperty/15.2.3.6-4-540.js b/test/built-ins/Object/defineProperty/15.2.3.6-4-540.js
index 55d0186ad55cc25bd1505cc72fb66ae4a4802cd3..141ecc9f56a32c70955d46b144c810951ad68c9e 100644
--- a/test/built-ins/Object/defineProperty/15.2.3.6-4-540.js
+++ b/test/built-ins/Object/defineProperty/15.2.3.6-4-540.js
@@ -7,10 +7,8 @@ description: >
     ES5 Attributes - [[Set]] attribute of accessor property ([[Get]]
     is a Function, [[Set]] is a Function, [[Enumerable]] is true,
     [[Configurable]] is false) is the expected function
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
         var obj = {};
 
         var getFunc = function () {
@@ -33,6 +31,6 @@ function testcase() {
         var propertyDefineCorrect = obj.hasOwnProperty("prop");
         var desc = Object.getOwnPropertyDescriptor(obj, "prop");
 
-        return propertyDefineCorrect && desc.set === setFunc && verifySetFunc === "overrideData";
-    }
-runTestCase(testcase);
+assert(propertyDefineCorrect, 'propertyDefineCorrect !== true');
+assert.sameValue(desc.set, setFunc, 'desc.set');
+assert.sameValue(verifySetFunc, "overrideData", 'verifySetFunc');
diff --git a/test/built-ins/Object/defineProperty/15.2.3.6-4-548.js b/test/built-ins/Object/defineProperty/15.2.3.6-4-548.js
index 60b2c751abfce88a98f758882669ae9bd6ee4492..fc6d76d4724858220c368444d7a5041dd7d97a4a 100644
--- a/test/built-ins/Object/defineProperty/15.2.3.6-4-548.js
+++ b/test/built-ins/Object/defineProperty/15.2.3.6-4-548.js
@@ -7,10 +7,8 @@ description: >
     ES5 Attributes - [[Get]] attribute of accessor property ([[Get]]
     is a Function, [[Set]] is a Function, [[Enumerable]] is false,
     [[Configurable]] is true) is the expected function
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
         var obj = {};
 
         var getFunc = function () {
@@ -32,6 +30,6 @@ function testcase() {
         var propertyDefineCorrect = obj.hasOwnProperty("prop");
         var desc = Object.getOwnPropertyDescriptor(obj, "prop");
 
-        return propertyDefineCorrect && desc.get === getFunc && obj.prop === 1001;
-    }
-runTestCase(testcase);
+assert(propertyDefineCorrect, 'propertyDefineCorrect !== true');
+assert.sameValue(desc.get, getFunc, 'desc.get');
+assert.sameValue(obj.prop, 1001, 'obj.prop');
diff --git a/test/built-ins/Object/defineProperty/15.2.3.6-4-549.js b/test/built-ins/Object/defineProperty/15.2.3.6-4-549.js
index a6388d439f0df19209fc534185901f521d8569e6..a8cd117d9c6f549c8f78601391ad1af70af89f30 100644
--- a/test/built-ins/Object/defineProperty/15.2.3.6-4-549.js
+++ b/test/built-ins/Object/defineProperty/15.2.3.6-4-549.js
@@ -7,10 +7,8 @@ description: >
     ES5 Attributes - [[Set]] attribute of accessor property ([[Get]]
     is a Function, [[Set]] is a Function, [[Enumerable]] is false,
     [[Configurable]] is true) is the expected function
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
         var obj = {};
 
         var getFunc = function () {
@@ -33,6 +31,6 @@ function testcase() {
         var propertyDefineCorrect = obj.hasOwnProperty("prop");
         var desc = Object.getOwnPropertyDescriptor(obj, "prop");
 
-        return propertyDefineCorrect && desc.set === setFunc && verifySetFunc === "overrideData";
-    }
-runTestCase(testcase);
+assert(propertyDefineCorrect, 'propertyDefineCorrect !== true');
+assert.sameValue(desc.set, setFunc, 'desc.set');
+assert.sameValue(verifySetFunc, "overrideData", 'verifySetFunc');
diff --git a/test/built-ins/Object/defineProperty/15.2.3.6-4-551.js b/test/built-ins/Object/defineProperty/15.2.3.6-4-551.js
index aa76b6fe96f6b3325b358e974f67c08af850cabf..1cd7d71c713c5c3a646029766865e2d7cbc11e81 100644
--- a/test/built-ins/Object/defineProperty/15.2.3.6-4-551.js
+++ b/test/built-ins/Object/defineProperty/15.2.3.6-4-551.js
@@ -7,10 +7,8 @@ description: >
     ES5 Attributes - property ([[Get]] is a Function, [[Set]] is a
     Function, [[Enumerable]] is false, [[Configurable]] is true) is
     deletable
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
         var obj = {};
 
         var getFunc = function () {
@@ -34,6 +32,6 @@ function testcase() {
 
         delete obj.prop;
 
-        return propertyDefineCorrect && desc.configurable === true && !obj.hasOwnProperty("prop");
-    }
-runTestCase(testcase);
+assert(propertyDefineCorrect, 'propertyDefineCorrect !== true');
+assert.sameValue(desc.configurable, true, 'desc.configurable');
+assert.sameValue(obj.hasOwnProperty("prop"), false, 'obj.hasOwnProperty("prop")');
diff --git a/test/built-ins/Object/defineProperty/15.2.3.6-4-552.js b/test/built-ins/Object/defineProperty/15.2.3.6-4-552.js
index df1f5c22df4653d01ff555ee19c1b50201935e5e..34fe59a869d1a6b2e78b0d5b8eadb9b0311b4677 100644
--- a/test/built-ins/Object/defineProperty/15.2.3.6-4-552.js
+++ b/test/built-ins/Object/defineProperty/15.2.3.6-4-552.js
@@ -8,10 +8,8 @@ description: >
     property ([[Get]] is a Function, [[Set]] is a Function,
     [[Enumerable]] is false, [[Configurable]] is true) to different
     value
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
         var obj = {};
 
         var getFunc = function () {
@@ -40,6 +38,7 @@ function testcase() {
         var result2 = typeof obj.prop === "undefined";
         var desc2 = Object.getOwnPropertyDescriptor(obj, "prop");
 
-        return result1 && result2 && desc1.get === getFunc && typeof desc2.get === "undefined";
-    }
-runTestCase(testcase);
+assert(result1, 'result1 !== true');
+assert(result2, 'result2 !== true');
+assert.sameValue(desc1.get, getFunc, 'desc1.get');
+assert.sameValue(typeof desc2.get, "undefined", 'typeof desc2.get');
diff --git a/test/built-ins/Object/defineProperty/15.2.3.6-4-553.js b/test/built-ins/Object/defineProperty/15.2.3.6-4-553.js
index 17524df72957236079132e51f2e0d4fbdf5b4111..62695097dd57ebe98fa44ab11d7dfbe77953273e 100644
--- a/test/built-ins/Object/defineProperty/15.2.3.6-4-553.js
+++ b/test/built-ins/Object/defineProperty/15.2.3.6-4-553.js
@@ -8,10 +8,8 @@ description: >
     property ([[Get]] is a Function, [[Set]] is a Function,
     [[Enumerable]] is false, [[Configurable]] is true) to different
     value
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
         var obj = {};
 
         var getFunc = function () {
@@ -38,6 +36,5 @@ function testcase() {
 
         var desc2 = Object.getOwnPropertyDescriptor(obj, "prop");
 
-        return desc1.set === setFunc && typeof desc2.set === "undefined";
-    }
-runTestCase(testcase);
+assert.sameValue(desc1.set, setFunc, 'desc1.set');
+assert.sameValue(typeof desc2.set, "undefined", 'typeof desc2.set');
diff --git a/test/built-ins/Object/defineProperty/15.2.3.6-4-554.js b/test/built-ins/Object/defineProperty/15.2.3.6-4-554.js
index f3414191c4f3c5a013a025bab51dc0ef2e858f33..2486116154ec8936e5fca7e3b74590f3fe29f75a 100644
--- a/test/built-ins/Object/defineProperty/15.2.3.6-4-554.js
+++ b/test/built-ins/Object/defineProperty/15.2.3.6-4-554.js
@@ -8,10 +8,8 @@ description: >
     accessor property ([[Get]] is a Function, [[Set]] is a Function,
     [[Enumerable]] is false, [[Configurable]] is true) to different
     value
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
         var obj = {};
 
         var getFunc = function () {
@@ -49,6 +47,7 @@ function testcase() {
             }
         }
 
-        return !result1 && result2 && desc1.enumerable === false && desc2.enumerable === true;
-    }
-runTestCase(testcase);
+assert.sameValue(result1, false, 'result1');
+assert(result2, 'result2 !== true');
+assert.sameValue(desc1.enumerable, false, 'desc1.enumerable');
+assert.sameValue(desc2.enumerable, true, 'desc2.enumerable');
diff --git a/test/built-ins/Object/defineProperty/15.2.3.6-4-556.js b/test/built-ins/Object/defineProperty/15.2.3.6-4-556.js
index a52cd765caa4b207fa4514da102ff56120505819..0e91ba3b536ffd674214c82be9afc7e4bf0faa28 100644
--- a/test/built-ins/Object/defineProperty/15.2.3.6-4-556.js
+++ b/test/built-ins/Object/defineProperty/15.2.3.6-4-556.js
@@ -7,10 +7,8 @@ description: >
     ES5 Attributes - success to update the accessor property ([[Get]]
     is a Function, [[Set]] is a Function, [[Enumerable]] is false,
     [[Configurable]] is true) to a data property
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
         var obj = {};
 
         var getFunc = function () {
@@ -36,6 +34,5 @@ function testcase() {
         });
         var desc2 = Object.getOwnPropertyDescriptor(obj, "prop");
 
-        return desc1.hasOwnProperty("get") && desc2.hasOwnProperty("value");
-    }
-runTestCase(testcase);
+assert(desc1.hasOwnProperty("get"), 'desc1.hasOwnProperty("get") !== true');
+assert(desc2.hasOwnProperty("value"), 'desc2.hasOwnProperty("value") !== true');
diff --git a/test/built-ins/Object/defineProperty/15.2.3.6-4-557.js b/test/built-ins/Object/defineProperty/15.2.3.6-4-557.js
index 049529f7fac5527a54fd19864cade53567431178..be2d5d46c75ffbf4df45399539c11a324e130863 100644
--- a/test/built-ins/Object/defineProperty/15.2.3.6-4-557.js
+++ b/test/built-ins/Object/defineProperty/15.2.3.6-4-557.js
@@ -7,10 +7,8 @@ description: >
     ES5 Attributes - [[Get]] attribute of accessor property ([[Get]]
     is a Function, [[Set]] is a Function, [[Enumerable]] is false,
     [[Configurable]] is false) is the expected function
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
         var obj = {};
 
         var getFunc = function () {
@@ -32,6 +30,6 @@ function testcase() {
         var propertyDefineCorrect = obj.hasOwnProperty("prop");
         var desc = Object.getOwnPropertyDescriptor(obj, "prop");
 
-        return propertyDefineCorrect && desc.get === getFunc && obj.prop === 1001;
-    }
-runTestCase(testcase);
+assert(propertyDefineCorrect, 'propertyDefineCorrect !== true');
+assert.sameValue(desc.get, getFunc, 'desc.get');
+assert.sameValue(obj.prop, 1001, 'obj.prop');
diff --git a/test/built-ins/Object/defineProperty/15.2.3.6-4-558.js b/test/built-ins/Object/defineProperty/15.2.3.6-4-558.js
index f9c0761d9f4dee9a91e5f5305cd820b912b1b4fb..1bcd85f7c18bfe5581dc7d18da1454f85d77627f 100644
--- a/test/built-ins/Object/defineProperty/15.2.3.6-4-558.js
+++ b/test/built-ins/Object/defineProperty/15.2.3.6-4-558.js
@@ -7,10 +7,8 @@ description: >
     ES5 Attributes - [[Set]] attribute of accessor property ([[Get]]
     is a Function, [[Set]] is a Function, [[Enumerable]] is false,
     [[Configurable]] is false) is the expected function
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
         var obj = {};
 
         var getFunc = function () {
@@ -33,6 +31,6 @@ function testcase() {
         var propertyDefineCorrect = obj.hasOwnProperty("prop");
         var desc = Object.getOwnPropertyDescriptor(obj, "prop");
 
-        return propertyDefineCorrect && desc.set === setFunc && verifySetFunc === "overrideData";
-    }
-runTestCase(testcase);
+assert(propertyDefineCorrect, 'propertyDefineCorrect !== true');
+assert.sameValue(desc.set, setFunc, 'desc.set');
+assert.sameValue(verifySetFunc, "overrideData", 'verifySetFunc');
diff --git a/test/built-ins/Object/defineProperty/15.2.3.6-4-566.js b/test/built-ins/Object/defineProperty/15.2.3.6-4-566.js
index c2e268bfc4cab70b79f87e5cf63365606a739fe5..f3deecae487c879e1f3ec027e55c3826e5d2d305 100644
--- a/test/built-ins/Object/defineProperty/15.2.3.6-4-566.js
+++ b/test/built-ins/Object/defineProperty/15.2.3.6-4-566.js
@@ -6,10 +6,8 @@ es5id: 15.2.3.6-4-566
 description: >
     ES5 Attributes - [[Get]] attribute is a function which has zero
     argument
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
         var obj = {};
         var getFunc = function () {
             return 2010;
@@ -21,6 +19,6 @@ function testcase() {
 
         var desc = Object.getOwnPropertyDescriptor(obj, "prop");
 
-        return obj.hasOwnProperty("prop") && obj.prop === 2010 && desc.get === getFunc;
-    }
-runTestCase(testcase);
+assert(obj.hasOwnProperty("prop"), 'obj.hasOwnProperty("prop") !== true');
+assert.sameValue(obj.prop, 2010, 'obj.prop');
+assert.sameValue(desc.get, getFunc, 'desc.get');
diff --git a/test/built-ins/Object/defineProperty/15.2.3.6-4-567.js b/test/built-ins/Object/defineProperty/15.2.3.6-4-567.js
index 65a039a0bfddccdec841298610000ef42ad915e9..b61e13a1f4ac339586376fc3fd3b554215a5980c 100644
--- a/test/built-ins/Object/defineProperty/15.2.3.6-4-567.js
+++ b/test/built-ins/Object/defineProperty/15.2.3.6-4-567.js
@@ -6,10 +6,8 @@ es5id: 15.2.3.6-4-567
 description: >
     ES5 Attributes - [[Get]] attribute is a function which has one
     argument
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
         var obj = {};
         var getFunc = function (arg1) {
             return 2010;
@@ -21,6 +19,6 @@ function testcase() {
 
         var desc = Object.getOwnPropertyDescriptor(obj, "prop");
 
-        return obj.hasOwnProperty("prop") && obj.prop === 2010 && desc.get === getFunc;
-    }
-runTestCase(testcase);
+assert(obj.hasOwnProperty("prop"), 'obj.hasOwnProperty("prop") !== true');
+assert.sameValue(obj.prop, 2010, 'obj.prop');
+assert.sameValue(desc.get, getFunc, 'desc.get');
diff --git a/test/built-ins/Object/defineProperty/15.2.3.6-4-568.js b/test/built-ins/Object/defineProperty/15.2.3.6-4-568.js
index a3aa983fd1aca2ca18a8fc1aa38dad084002ddd1..9a37b39d547907b7646f1a92f3fba9a413dcb008 100644
--- a/test/built-ins/Object/defineProperty/15.2.3.6-4-568.js
+++ b/test/built-ins/Object/defineProperty/15.2.3.6-4-568.js
@@ -6,10 +6,8 @@ es5id: 15.2.3.6-4-568
 description: >
     ES5 Attributes - [[Get]] attribute is a function which has two
     arguments
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
         var obj = {};
         var getFunc = function (arg1, arg2) {
             return 2010;
@@ -21,6 +19,6 @@ function testcase() {
 
         var desc = Object.getOwnPropertyDescriptor(obj, "prop");
 
-        return obj.hasOwnProperty("prop") && obj.prop === 2010 && desc.get === getFunc;
-    }
-runTestCase(testcase);
+assert(obj.hasOwnProperty("prop"), 'obj.hasOwnProperty("prop") !== true');
+assert.sameValue(obj.prop, 2010, 'obj.prop');
+assert.sameValue(desc.get, getFunc, 'desc.get');
diff --git a/test/built-ins/Object/defineProperty/15.2.3.6-4-569.js b/test/built-ins/Object/defineProperty/15.2.3.6-4-569.js
index b7bac598d9a96ae3c18804223c0b62c54324700e..9c1564a68325e8ab42bbb1faedc26679d95e373a 100644
--- a/test/built-ins/Object/defineProperty/15.2.3.6-4-569.js
+++ b/test/built-ins/Object/defineProperty/15.2.3.6-4-569.js
@@ -6,10 +6,8 @@ es5id: 15.2.3.6-4-569
 description: >
     ES5 Attributes - [[Get]] attribute is a function which contains
     global variable
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
         var obj = {};
         var globalVariable = 20;
         var getFunc = function () {
@@ -22,6 +20,7 @@ function testcase() {
         });
         var desc = Object.getOwnPropertyDescriptor(obj, "prop");
 
-        return obj.hasOwnProperty("prop") && desc.get === getFunc && obj.prop === 2010 && globalVariable === 2010;
-    }
-runTestCase(testcase);
+assert(obj.hasOwnProperty("prop"), 'obj.hasOwnProperty("prop") !== true');
+assert.sameValue(desc.get, getFunc, 'desc.get');
+assert.sameValue(obj.prop, 2010, 'obj.prop');
+assert.sameValue(globalVariable, 2010, 'globalVariable');
diff --git a/test/built-ins/Object/defineProperty/15.2.3.6-4-570.js b/test/built-ins/Object/defineProperty/15.2.3.6-4-570.js
index 8bed118513e7ad04a0232271ee4c8babff009b20..5aa6cada3525aa77545999adf19b3d508d1aa2f3 100644
--- a/test/built-ins/Object/defineProperty/15.2.3.6-4-570.js
+++ b/test/built-ins/Object/defineProperty/15.2.3.6-4-570.js
@@ -6,10 +6,8 @@ es5id: 15.2.3.6-4-570
 description: >
     ES5 Attributes - [[Get]] attribute is a function which doesn't
     contains return statement
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
         var obj = {};
         var verifyExecute = false;
         var getFunc = function () {
@@ -22,6 +20,7 @@ function testcase() {
 
         var desc = Object.getOwnPropertyDescriptor(obj, "prop");
 
-        return obj.hasOwnProperty("prop") && desc.get === getFunc && typeof obj.prop === "undefined" && verifyExecute;
-    }
-runTestCase(testcase);
+assert(obj.hasOwnProperty("prop"), 'obj.hasOwnProperty("prop") !== true');
+assert.sameValue(desc.get, getFunc, 'desc.get');
+assert.sameValue(typeof obj.prop, "undefined", 'typeof obj.prop');
+assert(verifyExecute, 'verifyExecute !== true');
diff --git a/test/built-ins/Object/defineProperty/15.2.3.6-4-571.js b/test/built-ins/Object/defineProperty/15.2.3.6-4-571.js
index 3b94fee9e0e09135f6611195624de39605de6969..308b6693b1f6d8c1e341b3657235595a005f4c61 100644
--- a/test/built-ins/Object/defineProperty/15.2.3.6-4-571.js
+++ b/test/built-ins/Object/defineProperty/15.2.3.6-4-571.js
@@ -6,10 +6,8 @@ es5id: 15.2.3.6-4-571
 description: >
     ES5 Attributes - [[Get]] attribute is a function which involves
     'this' object into statement(s)
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
         var obj = {
             len: 2010
         };
@@ -23,6 +21,6 @@ function testcase() {
 
         var desc = Object.getOwnPropertyDescriptor(obj, "prop");
 
-        return obj.hasOwnProperty("prop") && obj.prop === obj && desc.get === getFunc;
-    }
-runTestCase(testcase);
+assert(obj.hasOwnProperty("prop"), 'obj.hasOwnProperty("prop") !== true');
+assert.sameValue(obj.prop, obj, 'obj.prop');
+assert.sameValue(desc.get, getFunc, 'desc.get');
diff --git a/test/built-ins/Object/defineProperty/15.2.3.6-4-572.js b/test/built-ins/Object/defineProperty/15.2.3.6-4-572.js
index 4606e17c140d2cc708064a8676216fd1da587036..74d43c55a95f748fd32fb365ffda691e3eb059eb 100644
--- a/test/built-ins/Object/defineProperty/15.2.3.6-4-572.js
+++ b/test/built-ins/Object/defineProperty/15.2.3.6-4-572.js
@@ -6,10 +6,8 @@ es5id: 15.2.3.6-4-572
 description: >
     ES5 Attributes - [[Set]] attribute is a function which has zero
     argument
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
         var obj = {};
 
         var setFunc = function () { };
@@ -20,6 +18,5 @@ function testcase() {
 
         var desc = Object.getOwnPropertyDescriptor(obj, "prop");
 
-        return obj.hasOwnProperty("prop") && desc.set === setFunc;
-    }
-runTestCase(testcase);
+assert(obj.hasOwnProperty("prop"), 'obj.hasOwnProperty("prop") !== true');
+assert.sameValue(desc.set, setFunc, 'desc.set');
diff --git a/test/built-ins/Object/defineProperty/15.2.3.6-4-573.js b/test/built-ins/Object/defineProperty/15.2.3.6-4-573.js
index b6bf86c2221e588bfa8d04c3e588e4f5a671d109..f6d79774d5d4b95e1383d3372c43bbffc84cbd49 100644
--- a/test/built-ins/Object/defineProperty/15.2.3.6-4-573.js
+++ b/test/built-ins/Object/defineProperty/15.2.3.6-4-573.js
@@ -6,10 +6,8 @@ es5id: 15.2.3.6-4-573
 description: >
     ES5 Attributes - [[Set]] attribute is a function which has one
     argument
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
         var obj = {};
 
         var verifySetFunc = 20;
@@ -22,6 +20,6 @@ function testcase() {
         obj.prop = 2010;
         var desc = Object.getOwnPropertyDescriptor(obj, "prop");
 
-        return obj.hasOwnProperty("prop") && desc.set === setFunc && verifySetFunc === 2010;
-    }
-runTestCase(testcase);
+assert(obj.hasOwnProperty("prop"), 'obj.hasOwnProperty("prop") !== true');
+assert.sameValue(desc.set, setFunc, 'desc.set');
+assert.sameValue(verifySetFunc, 2010, 'verifySetFunc');
diff --git a/test/built-ins/Object/defineProperty/15.2.3.6-4-574.js b/test/built-ins/Object/defineProperty/15.2.3.6-4-574.js
index e68b6098f6282e8bc767b2617b10ebeae4db7e82..0d63001c646d0cbdfd4d845edd891aab38c59fd6 100644
--- a/test/built-ins/Object/defineProperty/15.2.3.6-4-574.js
+++ b/test/built-ins/Object/defineProperty/15.2.3.6-4-574.js
@@ -6,10 +6,8 @@ es5id: 15.2.3.6-4-574
 description: >
     ES5 Attributes - [[Set]] attribute is a function which has two
     arguments
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
         var obj = {};
         var firstArg = 12;
         var secondArg = 12;
@@ -24,6 +22,7 @@ function testcase() {
         obj.prop = 100;
         var desc = Object.getOwnPropertyDescriptor(obj, "prop");
 
-        return obj.hasOwnProperty("prop") && desc.set === setFunc && firstArg === 100 && typeof secondArg === "undefined";
-    }
-runTestCase(testcase);
+assert(obj.hasOwnProperty("prop"), 'obj.hasOwnProperty("prop") !== true');
+assert.sameValue(desc.set, setFunc, 'desc.set');
+assert.sameValue(firstArg, 100, 'firstArg');
+assert.sameValue(typeof secondArg, "undefined", 'typeof secondArg');
diff --git a/test/built-ins/Object/defineProperty/15.2.3.6-4-575.js b/test/built-ins/Object/defineProperty/15.2.3.6-4-575.js
index 886decb1c69080044aaccd19038ccc2ebf0e19e6..7a0601c564c5fff5e96f42af055f726774797acf 100644
--- a/test/built-ins/Object/defineProperty/15.2.3.6-4-575.js
+++ b/test/built-ins/Object/defineProperty/15.2.3.6-4-575.js
@@ -6,10 +6,8 @@ es5id: 15.2.3.6-4-575
 description: >
     ES5 Attributes - [[Set]] attribute is a function which contains
     global variable
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
         var obj = {};
         var globalVariable = 20;
         var setFunc = function () {
@@ -22,6 +20,6 @@ function testcase() {
         obj.prop = 10;
         var desc = Object.getOwnPropertyDescriptor(obj, "prop");
 
-        return obj.hasOwnProperty("prop") && desc.set === setFunc && globalVariable === 2010;
-    }
-runTestCase(testcase);
+assert(obj.hasOwnProperty("prop"), 'obj.hasOwnProperty("prop") !== true');
+assert.sameValue(desc.set, setFunc, 'desc.set');
+assert.sameValue(globalVariable, 2010, 'globalVariable');
diff --git a/test/built-ins/Object/defineProperty/15.2.3.6-4-576.js b/test/built-ins/Object/defineProperty/15.2.3.6-4-576.js
index 73c777777c58a7ff59cb1c2917603765fbc11ec7..36c181458287b3ca9651a24e5925a2a99660cbc7 100644
--- a/test/built-ins/Object/defineProperty/15.2.3.6-4-576.js
+++ b/test/built-ins/Object/defineProperty/15.2.3.6-4-576.js
@@ -6,10 +6,8 @@ es5id: 15.2.3.6-4-576
 description: >
     ES5 Attributes - [[Set]] attribute is a function which contains
     return statement
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
         var obj = {};
 
         var setFunc = function () {
@@ -22,6 +20,5 @@ function testcase() {
 
         var desc = Object.getOwnPropertyDescriptor(obj, "prop");
 
-        return obj.hasOwnProperty("prop") && desc.set === setFunc;
-    }
-runTestCase(testcase);
+assert(obj.hasOwnProperty("prop"), 'obj.hasOwnProperty("prop") !== true');
+assert.sameValue(desc.set, setFunc, 'desc.set');
diff --git a/test/built-ins/Object/defineProperty/15.2.3.6-4-577.js b/test/built-ins/Object/defineProperty/15.2.3.6-4-577.js
index ba79be5903afc6edfa3ba14ddb80f80d5429966e..a7bba5a0e2219b1e363c7e67c6cb9f95fbb01109 100644
--- a/test/built-ins/Object/defineProperty/15.2.3.6-4-577.js
+++ b/test/built-ins/Object/defineProperty/15.2.3.6-4-577.js
@@ -6,10 +6,8 @@ es5id: 15.2.3.6-4-577
 description: >
     ES5 Attributes - [[Set]] attribute is a function which involves
     'this' object into statement(s)
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
         var obj = {};
 
         var setFunc = function (value) {
@@ -23,6 +21,6 @@ function testcase() {
 
         var desc = Object.getOwnPropertyDescriptor(obj, "prop");
 
-        return obj.hasOwnProperty("prop") && desc.set === setFunc && obj.len === 2010;
-    }
-runTestCase(testcase);
+assert(obj.hasOwnProperty("prop"), 'obj.hasOwnProperty("prop") !== true');
+assert.sameValue(desc.set, setFunc, 'desc.set');
+assert.sameValue(obj.len, 2010, 'obj.len');
diff --git a/test/built-ins/Object/defineProperty/15.2.3.6-4-588.js b/test/built-ins/Object/defineProperty/15.2.3.6-4-588.js
index 2cb8f361af386b6c9333da875cbf51e0912183df..09d635b6400aaf1c43cf7fd39847dfbc4686af62 100644
--- a/test/built-ins/Object/defineProperty/15.2.3.6-4-588.js
+++ b/test/built-ins/Object/defineProperty/15.2.3.6-4-588.js
@@ -6,10 +6,8 @@ es5id: 15.2.3.6-4-588
 description: >
     ES5 Attributes - [[Get]] field of inherited property of
     [[Prototype]] internal property is correct (Object.create)
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
         var appointment = {};
 
         var data1 = 1001;
@@ -48,8 +46,7 @@ function testcase() {
             !teamMeeting.hasOwnProperty("startTime") &&
             !teamMeeting.hasOwnProperty('conferenceCall');
 
-        return hasOwnProperty && teamMeeting.name === "NAME" &&
-            teamMeeting.startTime === 1001 &&
-            teamMeeting.conferenceCall === "In-person meeting";
-    }
-runTestCase(testcase);
+assert(hasOwnProperty, 'hasOwnProperty !== true');
+assert.sameValue(teamMeeting.name, "NAME", 'teamMeeting.name');
+assert.sameValue(teamMeeting.startTime, 1001, 'teamMeeting.startTime');
+assert.sameValue(teamMeeting.conferenceCall, "In-person meeting", 'teamMeeting.conferenceCall');
diff --git a/test/built-ins/Object/defineProperty/15.2.3.6-4-589.js b/test/built-ins/Object/defineProperty/15.2.3.6-4-589.js
index 1ef73419cc4f3b0b61ca62635b14562dafba6344..d3c303a973edf0d5e00fb243a0818495fa9c99f9 100644
--- a/test/built-ins/Object/defineProperty/15.2.3.6-4-589.js
+++ b/test/built-ins/Object/defineProperty/15.2.3.6-4-589.js
@@ -6,10 +6,8 @@ es5id: 15.2.3.6-4-589
 description: >
     ES5 Attributes - Success to update value of property into of
     [[Proptotype]] internal property (Object.create)
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
         var appointment = {};
 
         var data1 = 1001;
@@ -58,8 +56,7 @@ function testcase() {
             !teamMeeting.hasOwnProperty("startTime") &&
             !teamMeeting.hasOwnProperty('conferenceCall');
 
-        return hasOwnProperty && teamMeeting.name === "Team Meeting" &&
-            teamMeeting.startTime === dateObj &&
-            teamMeeting.conferenceCall === "4255551212";
-    }
-runTestCase(testcase);
+assert(hasOwnProperty, 'hasOwnProperty !== true');
+assert.sameValue(teamMeeting.name, "Team Meeting", 'teamMeeting.name');
+assert.sameValue(teamMeeting.startTime, dateObj, 'teamMeeting.startTime');
+assert.sameValue(teamMeeting.conferenceCall, "4255551212", 'teamMeeting.conferenceCall');
diff --git a/test/built-ins/Object/defineProperty/15.2.3.6-4-590.js b/test/built-ins/Object/defineProperty/15.2.3.6-4-590.js
index a58a90d000f1389c2f328b2244f78f176191d639..3e326be2e60f0094100d6ea8ede968892097ee1f 100644
--- a/test/built-ins/Object/defineProperty/15.2.3.6-4-590.js
+++ b/test/built-ins/Object/defineProperty/15.2.3.6-4-590.js
@@ -4,10 +4,8 @@
 /*---
 es5id: 15.2.3.6-4-590
 description: ES5 Attributes - Inherited property is enumerable (Object.create)
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
         var appointment = {};
 
         var data1 = 1001;
@@ -67,6 +65,7 @@ function testcase() {
             !teamMeeting.hasOwnProperty("startTime") &&
             !teamMeeting.hasOwnProperty('conferenceCall');
 
-        return hasOwnProperty && verifyTimeProp && verifyNameProp && verifyCallProp;
-    }
-runTestCase(testcase);
+assert(hasOwnProperty, 'hasOwnProperty !== true');
+assert(verifyTimeProp, 'verifyTimeProp !== true');
+assert(verifyNameProp, 'verifyNameProp !== true');
+assert(verifyCallProp, 'verifyCallProp !== true');
diff --git a/test/built-ins/Object/defineProperty/15.2.3.6-4-592.js b/test/built-ins/Object/defineProperty/15.2.3.6-4-592.js
index a59653449c3d9e52e4dce4ba4ecc3ed68c4d39e0..40784147f2e4ef56ace5b57416022d1fcd945e2a 100644
--- a/test/built-ins/Object/defineProperty/15.2.3.6-4-592.js
+++ b/test/built-ins/Object/defineProperty/15.2.3.6-4-592.js
@@ -6,10 +6,8 @@ es5id: 15.2.3.6-4-592
 description: >
     ES5 Attributes - Inherited property is non-enumerable
     (Object.create)
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
         var appointment = {};
 
         var data1 = 1001;
@@ -60,6 +58,7 @@ function testcase() {
             !teamMeeting.hasOwnProperty("startTime") &&
             !teamMeeting.hasOwnProperty('conferenceCall');
 
-        return hasOwnProperty && !verifyTimeProp && !verifyNameProp && !verifyCallProp;
-    }
-runTestCase(testcase);
+assert(hasOwnProperty, 'hasOwnProperty !== true');
+assert.sameValue(verifyTimeProp, false, 'verifyTimeProp');
+assert.sameValue(verifyNameProp, false, 'verifyNameProp');
+assert.sameValue(verifyCallProp, false, 'verifyCallProp');
diff --git a/test/built-ins/Object/defineProperty/15.2.3.6-4-6.js b/test/built-ins/Object/defineProperty/15.2.3.6-4-6.js
index 3b34efda697f09bd09c8db172435df64a3a1b652..aa0c45a57c8816bcf9e17bbc1966d92564b4ab3d 100644
--- a/test/built-ins/Object/defineProperty/15.2.3.6-4-6.js
+++ b/test/built-ins/Object/defineProperty/15.2.3.6-4-6.js
@@ -11,10 +11,8 @@ es5id: 15.2.3.6-4-6
 description: >
     Object.defineProperty is no-op if current and desc are the same
     accessor desc
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
   function sameAccessorDescriptorValues(d1, d2) {
     return (d1.get == d2.get &&
             d1.enumerable == d2.enumerable &&
@@ -43,8 +41,4 @@ function testcase() {
 
   var d2 = Object.getOwnPropertyDescriptor(o, "foo"); 
 
-  if (sameAccessorDescriptorValues(d1, d2) === true) {
-    return true;
-  }
- }
-runTestCase(testcase);
+assert.sameValue(sameAccessorDescriptorValues(d1, d2), true, 'sameAccessorDescriptorValues(d1, d2)');
diff --git a/test/built-ins/Object/defineProperty/8.12.9-9-b-i_1.js b/test/built-ins/Object/defineProperty/8.12.9-9-b-i_1.js
index 77adc834da2d9b445a2d3aa600dbc03b4d89f6e2..17e8b1667f805eec56d33817bd546246f4f07893 100644
--- a/test/built-ins/Object/defineProperty/8.12.9-9-b-i_1.js
+++ b/test/built-ins/Object/defineProperty/8.12.9-9-b-i_1.js
@@ -6,10 +6,8 @@ es5id: 8.12.9-9-b-i_1
 description: >
     Redefine a configurable data property to be an accessor property
     on a newly non-extensible object
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
     var o = {};
     Object.defineProperty(o, "foo", 
                           { value: "hello", 
@@ -18,6 +16,11 @@ function testcase() {
     Object.defineProperty(o, "foo", { get: function() { return 5;} });
 
     var fooDescrip = Object.getOwnPropertyDescriptor(o, "foo");
-    return o.foo===5 && fooDescrip.get!==undefined && fooDescrip.set===undefined && fooDescrip.value===undefined && fooDescrip.configurable===true && fooDescrip.enumerable===false && fooDescrip.writable===undefined;
-}
-runTestCase(testcase);
+
+assert.sameValue(o.foo, 5, 'o.foo');
+assert(fooDescrip.get!==undefined, 'fooDescrip.get!==undefined !== true');
+assert.sameValue(fooDescrip.set, undefined, 'fooDescrip.set');
+assert.sameValue(fooDescrip.value, undefined, 'fooDescrip.value');
+assert.sameValue(fooDescrip.configurable, true, 'fooDescrip.configurable');
+assert.sameValue(fooDescrip.enumerable, false, 'fooDescrip.enumerable');
+assert.sameValue(fooDescrip.writable, undefined, 'fooDescrip.writable');
diff --git a/test/built-ins/Object/defineProperty/8.12.9-9-b-i_2.js b/test/built-ins/Object/defineProperty/8.12.9-9-b-i_2.js
index f1a11ac7a389ae7bc963adff946503d303b3cb85..00ab01527bb3eab4a9662468aa5e07d4ea97f16a 100644
--- a/test/built-ins/Object/defineProperty/8.12.9-9-b-i_2.js
+++ b/test/built-ins/Object/defineProperty/8.12.9-9-b-i_2.js
@@ -6,10 +6,8 @@ es5id: 8.12.9-9-b-i_2
 description: >
     Redefine a configurable data property to be an accessor property
     on a newly non-extensible object
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
     var o = {};
     Object.defineProperty(o, "foo", 
                           { value: "hello", 
@@ -20,6 +18,11 @@ function testcase() {
     Object.defineProperty(o, "foo", { get: function() { return 5;} });
 
     var fooDescrip = Object.getOwnPropertyDescriptor(o, "foo");
-    return o.foo===5 && fooDescrip.get!==undefined && fooDescrip.set===undefined && fooDescrip.value===undefined && fooDescrip.configurable===true && fooDescrip.enumerable===true && fooDescrip.writable===undefined;
-}
-runTestCase(testcase);
+
+assert.sameValue(o.foo, 5, 'o.foo');
+assert(fooDescrip.get!==undefined, 'fooDescrip.get!==undefined !== true');
+assert.sameValue(fooDescrip.set, undefined, 'fooDescrip.set');
+assert.sameValue(fooDescrip.value, undefined, 'fooDescrip.value');
+assert.sameValue(fooDescrip.configurable, true, 'fooDescrip.configurable');
+assert.sameValue(fooDescrip.enumerable, true, 'fooDescrip.enumerable');
+assert.sameValue(fooDescrip.writable, undefined, 'fooDescrip.writable');
diff --git a/test/built-ins/Object/defineProperty/8.12.9-9-c-i_1.js b/test/built-ins/Object/defineProperty/8.12.9-9-c-i_1.js
index 8f27406723ecd7b9dfda595d49aec797f426f4ab..f64da3594d7a3f17dc0381cd28df8dbb26bb9d35 100644
--- a/test/built-ins/Object/defineProperty/8.12.9-9-c-i_1.js
+++ b/test/built-ins/Object/defineProperty/8.12.9-9-c-i_1.js
@@ -6,10 +6,8 @@ es5id: 8.12.9-9-c-i_1
 description: >
     Redefine a configurable accessor property to be a data property on
     a non-extensible object
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
     var o = {};
     Object.defineProperty(o, "foo", 
                           { get: function() { return 5;}, 
@@ -18,6 +16,11 @@ function testcase() {
     Object.defineProperty(o, "foo", { value: "hello"});
 
     var fooDescrip = Object.getOwnPropertyDescriptor(o, "foo");
-    return o.foo==="hello" && fooDescrip.get===undefined && fooDescrip.set===undefined && fooDescrip.value==="hello" && fooDescrip.configurable===true && fooDescrip.enumerable===false && fooDescrip.writable===false;
-}
-runTestCase(testcase);
+
+assert.sameValue(o.foo, "hello", 'o.foo');
+assert.sameValue(fooDescrip.get, undefined, 'fooDescrip.get');
+assert.sameValue(fooDescrip.set, undefined, 'fooDescrip.set');
+assert.sameValue(fooDescrip.value, "hello", 'fooDescrip.value');
+assert.sameValue(fooDescrip.configurable, true, 'fooDescrip.configurable');
+assert.sameValue(fooDescrip.enumerable, false, 'fooDescrip.enumerable');
+assert.sameValue(fooDescrip.writable, false, 'fooDescrip.writable');
diff --git a/test/built-ins/Object/defineProperty/8.12.9-9-c-i_2.js b/test/built-ins/Object/defineProperty/8.12.9-9-c-i_2.js
index 3bda5a8cebfc68a08c277c697c929ee12c748e7b..118ff856fe6f7bbe3a04454dc07f8cdaea202e17 100644
--- a/test/built-ins/Object/defineProperty/8.12.9-9-c-i_2.js
+++ b/test/built-ins/Object/defineProperty/8.12.9-9-c-i_2.js
@@ -6,10 +6,8 @@ es5id: 8.12.9-9-c-i_2
 description: >
     Redefine a configurable accessor property to be a data property on
     a non-extensible object
-includes: [runTestCase.js]
 ---*/
 
-function testcase() {
     var o = {};
     Object.defineProperty(o, "foo", 
                           { get: function() { return 5;}, 
@@ -20,6 +18,11 @@ function testcase() {
                             writable: true});
 
     var fooDescrip = Object.getOwnPropertyDescriptor(o, "foo");
-    return o.foo==="hello" && fooDescrip.get===undefined && fooDescrip.set===undefined && fooDescrip.value==="hello" && fooDescrip.configurable===true && fooDescrip.enumerable===false && fooDescrip.writable===true;
-}
-runTestCase(testcase);
+
+assert.sameValue(o.foo, "hello", 'o.foo');
+assert.sameValue(fooDescrip.get, undefined, 'fooDescrip.get');
+assert.sameValue(fooDescrip.set, undefined, 'fooDescrip.set');
+assert.sameValue(fooDescrip.value, "hello", 'fooDescrip.value');
+assert.sameValue(fooDescrip.configurable, true, 'fooDescrip.configurable');
+assert.sameValue(fooDescrip.enumerable, false, 'fooDescrip.enumerable');
+assert.sameValue(fooDescrip.writable, true, 'fooDescrip.writable');