From 4337b396bd07a7e8e566045bfe230db8f51ad737 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Andr=C3=A9=20Bargull?= <andre.bargull@gmail.com>
Date: Thu, 21 Dec 2017 12:08:25 -0800
Subject: [PATCH] Add separate test files for property attributes of Intl
 properties

---
 harness/testBuiltInObject.js                  | 32 +----------------
 test/intl402/Collator/10.1_L15.js             |  2 +-
 test/intl402/Collator/prop-desc.js            | 29 +++++++++++++++
 test/intl402/Collator/prototype/10.3_L15.js   |  2 +-
 .../prototype/compare/10.3.2_1_a_L15.js       |  2 +-
 .../Collator/prototype/compare/10.3.2_L15.js  |  2 +-
 .../Collator/prototype/compare/prop-desc.js   | 35 +++++++++++++++++++
 .../prototype/constructor/prop-desc.js        | 29 +++++++++++++++
 .../prototype/resolvedOptions/10.3.3_L15.js   |  2 +-
 .../prototype/resolvedOptions/prop-desc.js    | 29 +++++++++++++++
 .../Collator/supportedLocalesOf/10.2.2_L15.js |  2 +-
 .../Collator/supportedLocalesOf/prop-desc.js  | 29 +++++++++++++++
 .../toLocaleDateString/13.3.2_L15.js          |  2 +-
 .../prototype/toLocaleString/13.3.1_L15.js    |  2 +-
 .../toLocaleTimeString/13.3.3_L15.js          |  2 +-
 test/intl402/DateTimeFormat/12.1_L15.js       |  2 +-
 test/intl402/DateTimeFormat/prop-desc.js      | 29 +++++++++++++++
 .../DateTimeFormat/prototype/12.3_L15.js      |  2 +-
 .../prototype/constructor/prop-desc.js        | 29 +++++++++++++++
 .../prototype/format/12.3.2_1_a_L15.js        |  2 +-
 .../prototype/format/12.3.2_L15.js            |  2 +-
 .../prototype/format/prop-desc.js             | 35 +++++++++++++++++++
 .../prototype/resolvedOptions/12.3.3_L15.js   |  2 +-
 .../prototype/resolvedOptions/prop-desc.js    | 29 +++++++++++++++
 .../supportedLocalesOf/12.2.2_L15.js          |  2 +-
 .../supportedLocalesOf/prop-desc.js           | 29 +++++++++++++++
 test/intl402/Intl/8.0_L15.js                  |  4 +--
 .../prototype/toLocaleString/13.2.1_L15.js    |  2 +-
 test/intl402/NumberFormat/11.1_L15.js         |  2 +-
 test/intl402/NumberFormat/prop-desc.js        | 29 +++++++++++++++
 .../NumberFormat/prototype/11.3_L15.js        |  2 +-
 .../prototype/constructor/prop-desc.js        | 29 +++++++++++++++
 .../prototype/format/11.3.2_1_a_L15.js        |  2 +-
 .../prototype/format/11.3.2_L15.js            |  2 +-
 .../prototype/format/prop-desc.js             | 35 +++++++++++++++++++
 .../prototype/resolvedOptions/11.3.3_L15.js   |  2 +-
 .../prototype/resolvedOptions/prop-desc.js    | 29 +++++++++++++++
 .../supportedLocalesOf/11.2.2_L15.js          |  2 +-
 .../supportedLocalesOf/prop-desc.js           | 29 +++++++++++++++
 test/intl402/PluralRules/builtin.js           |  2 +-
 .../intl402/PluralRules/prototype/builtins.js |  2 +-
 .../prototype/constructor/prop-desc.js        | 29 +++++++++++++++
 .../prototype/resolvedOptions/builtins.js     |  2 +-
 .../prototype/resolvedOptions/prop-desc.js    | 29 +++++++++++++++
 .../PluralRules/prototype/select/prop-desc.js | 29 +++++++++++++++
 .../supportedLocalesOf/prop-desc.js           | 29 +++++++++++++++
 .../supportedLocalesOf/supportedLocalesOf.js  |  2 +-
 .../prototype/localeCompare/13.1.1_L15.js     |  2 +-
 48 files changed, 599 insertions(+), 60 deletions(-)
 create mode 100644 test/intl402/Collator/prop-desc.js
 create mode 100644 test/intl402/Collator/prototype/compare/prop-desc.js
 create mode 100644 test/intl402/Collator/prototype/constructor/prop-desc.js
 create mode 100644 test/intl402/Collator/prototype/resolvedOptions/prop-desc.js
 create mode 100644 test/intl402/Collator/supportedLocalesOf/prop-desc.js
 create mode 100644 test/intl402/DateTimeFormat/prop-desc.js
 create mode 100644 test/intl402/DateTimeFormat/prototype/constructor/prop-desc.js
 create mode 100644 test/intl402/DateTimeFormat/prototype/format/prop-desc.js
 create mode 100644 test/intl402/DateTimeFormat/prototype/resolvedOptions/prop-desc.js
 create mode 100644 test/intl402/DateTimeFormat/supportedLocalesOf/prop-desc.js
 create mode 100644 test/intl402/NumberFormat/prop-desc.js
 create mode 100644 test/intl402/NumberFormat/prototype/constructor/prop-desc.js
 create mode 100644 test/intl402/NumberFormat/prototype/format/prop-desc.js
 create mode 100644 test/intl402/NumberFormat/prototype/resolvedOptions/prop-desc.js
 create mode 100644 test/intl402/NumberFormat/supportedLocalesOf/prop-desc.js
 create mode 100644 test/intl402/PluralRules/prototype/constructor/prop-desc.js
 create mode 100644 test/intl402/PluralRules/prototype/resolvedOptions/prop-desc.js
 create mode 100644 test/intl402/PluralRules/prototype/select/prop-desc.js
 create mode 100644 test/intl402/PluralRules/supportedLocalesOf/prop-desc.js

diff --git a/harness/testBuiltInObject.js b/harness/testBuiltInObject.js
index 95fa2d3f6b..a923cbb7a8 100644
--- a/harness/testBuiltInObject.js
+++ b/harness/testBuiltInObject.js
@@ -11,12 +11,10 @@ description: |
  * @param {Object} obj the object to be tested.
  * @param {boolean} isFunction whether the specification describes obj as a function.
  * @param {boolean} isConstructor whether the specification describes obj as a constructor.
- * @param {String[]} properties an array with the names of the built-in properties of obj,
- *   excluding length, prototype, or properties with non-default attributes.
  * @author Norbert Lindenberg
  */
 
-function testBuiltInObject(obj, isFunction, isConstructor, properties) {
+function testBuiltInObject(obj, isFunction, isConstructor) {
 
   if (obj === undefined) {
     $ERROR("Object being tested is undefined.");
@@ -47,34 +45,6 @@ function testBuiltInObject(obj, isFunction, isConstructor, properties) {
     $ERROR("Built-in prototype objects must have Object.prototype as their prototype.");
   }
 
-  // verification of the absence of the [[Construct]] internal property has
-  // been moved to the end of the test
-
-  // verification of the absence of the prototype property has
-  // been moved to the end of the test
-
-  properties.forEach(function(prop) {
-    var desc = Object.getOwnPropertyDescriptor(obj, prop);
-    if (desc === undefined) {
-      $ERROR("Missing property " + prop + ".");
-    }
-    // accessor properties don't have writable attribute
-    if (desc.hasOwnProperty("writable") && !desc.writable) {
-      $ERROR("The " + prop + " property of this built-in object must be writable.");
-    }
-    if (desc.enumerable) {
-      $ERROR("The " + prop + " property of this built-in object must not be enumerable.");
-    }
-    if (!desc.configurable) {
-      $ERROR("The " + prop + " property of this built-in object must be configurable.");
-    }
-  });
-
-  // The remaining sections have been moved to the end of the test because
-  // unbound non-constructor functions written in JavaScript cannot possibly
-  // pass them, and we still want to test JavaScript implementations as much
-  // as possible.
-
   var exception;
   if (isFunction && !isConstructor) {
     // this is not a complete test for the presence of [[Construct]]:
diff --git a/test/intl402/Collator/10.1_L15.js b/test/intl402/Collator/10.1_L15.js
index 2f08ccd2af..0b7b5a5354 100644
--- a/test/intl402/Collator/10.1_L15.js
+++ b/test/intl402/Collator/10.1_L15.js
@@ -11,4 +11,4 @@ author: Norbert Lindenberg
 includes: [testBuiltInObject.js]
 ---*/
 
-testBuiltInObject(Intl.Collator, true, true, ["supportedLocalesOf"]);
+testBuiltInObject(Intl.Collator, true, true);
diff --git a/test/intl402/Collator/prop-desc.js b/test/intl402/Collator/prop-desc.js
new file mode 100644
index 0000000000..9eb65080d4
--- /dev/null
+++ b/test/intl402/Collator/prop-desc.js
@@ -0,0 +1,29 @@
+// Copyright (C) 2017 André Bargull. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+esid: sec-intl.collator-intro
+description: >
+  "Collator" property of Intl.
+info: |
+  Intl.Collator (...)
+
+  7 Requirements for Standard Built-in ECMAScript Objects
+
+    Unless specified otherwise in this document, the objects, functions, and constructors
+    described in this standard are subject to the generic requirements and restrictions
+    specified for standard built-in ECMAScript objects in the ECMAScript 2018 Language
+    Specification, 9th edition, clause 17, or successor.
+
+  17 ECMAScript Standard Built-in Objects:
+
+    Every other data property described in clauses 18 through 26 and in Annex B.2 has the
+    attributes { [[Writable]]: true, [[Enumerable]]: false, [[Configurable]]: true }
+    unless otherwise specified.
+
+includes: [propertyHelper.js]
+---*/
+
+verifyNotEnumerable(Intl, "Collator");
+verifyWritable(Intl, "Collator");
+verifyConfigurable(Intl, "Collator");
diff --git a/test/intl402/Collator/prototype/10.3_L15.js b/test/intl402/Collator/prototype/10.3_L15.js
index e2d458b156..692f2666c5 100644
--- a/test/intl402/Collator/prototype/10.3_L15.js
+++ b/test/intl402/Collator/prototype/10.3_L15.js
@@ -11,4 +11,4 @@ author: Norbert Lindenberg
 includes: [testBuiltInObject.js]
 ---*/
 
-testBuiltInObject(Intl.Collator.prototype, false, false, ["constructor", "compare", "resolvedOptions"]);
+testBuiltInObject(Intl.Collator.prototype, false, false);
diff --git a/test/intl402/Collator/prototype/compare/10.3.2_1_a_L15.js b/test/intl402/Collator/prototype/compare/10.3.2_1_a_L15.js
index 6f5920e7be..d86b720eaf 100644
--- a/test/intl402/Collator/prototype/compare/10.3.2_1_a_L15.js
+++ b/test/intl402/Collator/prototype/compare/10.3.2_1_a_L15.js
@@ -12,4 +12,4 @@ author: Norbert Lindenberg
 includes: [testBuiltInObject.js]
 ---*/
 
-testBuiltInObject(new Intl.Collator().compare, true, false, []);
+testBuiltInObject(new Intl.Collator().compare, true, false);
diff --git a/test/intl402/Collator/prototype/compare/10.3.2_L15.js b/test/intl402/Collator/prototype/compare/10.3.2_L15.js
index 5f11db40dc..4273e26284 100644
--- a/test/intl402/Collator/prototype/compare/10.3.2_L15.js
+++ b/test/intl402/Collator/prototype/compare/10.3.2_L15.js
@@ -11,4 +11,4 @@ author: Norbert Lindenberg
 includes: [testBuiltInObject.js]
 ---*/
 
-testBuiltInObject(Object.getOwnPropertyDescriptor(Intl.Collator.prototype, "compare").get , true, false, []);
+testBuiltInObject(Object.getOwnPropertyDescriptor(Intl.Collator.prototype, "compare").get , true, false);
diff --git a/test/intl402/Collator/prototype/compare/prop-desc.js b/test/intl402/Collator/prototype/compare/prop-desc.js
new file mode 100644
index 0000000000..7544b998a8
--- /dev/null
+++ b/test/intl402/Collator/prototype/compare/prop-desc.js
@@ -0,0 +1,35 @@
+// Copyright (C) 2017 André Bargull. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+esid: sec-intl.collator.prototype.resolvedoptions
+description: >
+  "compare" property of Intl.Collator.prototype.
+info: |
+  get Intl.Collator.prototype.compare
+
+  7 Requirements for Standard Built-in ECMAScript Objects
+
+    Unless specified otherwise in this document, the objects, functions, and constructors
+    described in this standard are subject to the generic requirements and restrictions
+    specified for standard built-in ECMAScript objects in the ECMAScript 2018 Language
+    Specification, 9th edition, clause 17, or successor.
+
+  17 ECMAScript Standard Built-in Objects:
+
+    Every accessor property described in clauses 18 through 26 and in Annex B.2 has the
+    attributes { [[Enumerable]]: false, [[Configurable]]: true } unless otherwise specified.
+    If only a get accessor function is described, the set accessor function is the default
+    value, undefined. If only a set accessor is described the get accessor is the default
+    value, undefined.
+
+includes: [propertyHelper.js]
+---*/
+
+var desc = Object.getOwnPropertyDescriptor(Intl.Collator.prototype, "compare");
+
+assert.sameValue(desc.set, undefined);
+assert.sameValue(typeof desc.get, "function");
+
+verifyNotEnumerable(Intl.Collator.prototype, "compare");
+verifyConfigurable(Intl.Collator.prototype, "compare");
diff --git a/test/intl402/Collator/prototype/constructor/prop-desc.js b/test/intl402/Collator/prototype/constructor/prop-desc.js
new file mode 100644
index 0000000000..2bda7b943f
--- /dev/null
+++ b/test/intl402/Collator/prototype/constructor/prop-desc.js
@@ -0,0 +1,29 @@
+// Copyright (C) 2017 André Bargull. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+esid: sec-intl.collator.prototype.constructor
+description: >
+  "constructor" property of Intl.Collator.prototype.
+info: |
+  Intl.Collator.prototype.constructor
+
+  7 Requirements for Standard Built-in ECMAScript Objects
+
+    Unless specified otherwise in this document, the objects, functions, and constructors
+    described in this standard are subject to the generic requirements and restrictions
+    specified for standard built-in ECMAScript objects in the ECMAScript 2018 Language
+    Specification, 9th edition, clause 17, or successor.
+
+  17 ECMAScript Standard Built-in Objects:
+
+    Every other data property described in clauses 18 through 26 and in Annex B.2 has the
+    attributes { [[Writable]]: true, [[Enumerable]]: false, [[Configurable]]: true }
+    unless otherwise specified.
+
+includes: [propertyHelper.js]
+---*/
+
+verifyNotEnumerable(Intl.Collator.prototype, "constructor");
+verifyWritable(Intl.Collator.prototype, "constructor");
+verifyConfigurable(Intl.Collator.prototype, "constructor");
diff --git a/test/intl402/Collator/prototype/resolvedOptions/10.3.3_L15.js b/test/intl402/Collator/prototype/resolvedOptions/10.3.3_L15.js
index 2c9238cde9..5ef66b88e0 100644
--- a/test/intl402/Collator/prototype/resolvedOptions/10.3.3_L15.js
+++ b/test/intl402/Collator/prototype/resolvedOptions/10.3.3_L15.js
@@ -11,4 +11,4 @@ author: Norbert Lindenberg
 includes: [testBuiltInObject.js]
 ---*/
 
-testBuiltInObject(Intl.Collator.prototype.resolvedOptions, true, false, []);
+testBuiltInObject(Intl.Collator.prototype.resolvedOptions, true, false);
diff --git a/test/intl402/Collator/prototype/resolvedOptions/prop-desc.js b/test/intl402/Collator/prototype/resolvedOptions/prop-desc.js
new file mode 100644
index 0000000000..d7e9974941
--- /dev/null
+++ b/test/intl402/Collator/prototype/resolvedOptions/prop-desc.js
@@ -0,0 +1,29 @@
+// Copyright (C) 2017 André Bargull. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+esid: sec-intl.collator.prototype.resolvedoptions
+description: >
+  "resolvedOptions" property of Intl.Collator.prototype.
+info: |
+  Intl.Collator.prototype.resolvedOptions ()
+
+  7 Requirements for Standard Built-in ECMAScript Objects
+
+    Unless specified otherwise in this document, the objects, functions, and constructors
+    described in this standard are subject to the generic requirements and restrictions
+    specified for standard built-in ECMAScript objects in the ECMAScript 2018 Language
+    Specification, 9th edition, clause 17, or successor.
+
+  17 ECMAScript Standard Built-in Objects:
+
+    Every other data property described in clauses 18 through 26 and in Annex B.2 has the
+    attributes { [[Writable]]: true, [[Enumerable]]: false, [[Configurable]]: true }
+    unless otherwise specified.
+
+includes: [propertyHelper.js]
+---*/
+
+verifyNotEnumerable(Intl.Collator.prototype, "resolvedOptions");
+verifyWritable(Intl.Collator.prototype, "resolvedOptions");
+verifyConfigurable(Intl.Collator.prototype, "resolvedOptions");
diff --git a/test/intl402/Collator/supportedLocalesOf/10.2.2_L15.js b/test/intl402/Collator/supportedLocalesOf/10.2.2_L15.js
index 870b90f569..5f9eb68d80 100644
--- a/test/intl402/Collator/supportedLocalesOf/10.2.2_L15.js
+++ b/test/intl402/Collator/supportedLocalesOf/10.2.2_L15.js
@@ -11,4 +11,4 @@ author: Norbert Lindenberg
 includes: [testBuiltInObject.js]
 ---*/
 
-testBuiltInObject(Intl.Collator.supportedLocalesOf, true, false, []);
+testBuiltInObject(Intl.Collator.supportedLocalesOf, true, false);
diff --git a/test/intl402/Collator/supportedLocalesOf/prop-desc.js b/test/intl402/Collator/supportedLocalesOf/prop-desc.js
new file mode 100644
index 0000000000..c2ad5613af
--- /dev/null
+++ b/test/intl402/Collator/supportedLocalesOf/prop-desc.js
@@ -0,0 +1,29 @@
+// Copyright (C) 2017 André Bargull. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+esid: sec-intl.collator.supportedlocalesof
+description: >
+  "supportedLocalesOf" property of Intl.Collator.
+info: |
+  Intl.Collator.supportedLocalesOf ( locales [ , options ] )
+
+  7 Requirements for Standard Built-in ECMAScript Objects
+
+    Unless specified otherwise in this document, the objects, functions, and constructors
+    described in this standard are subject to the generic requirements and restrictions
+    specified for standard built-in ECMAScript objects in the ECMAScript 2018 Language
+    Specification, 9th edition, clause 17, or successor.
+
+  17 ECMAScript Standard Built-in Objects:
+
+    Every other data property described in clauses 18 through 26 and in Annex B.2 has the
+    attributes { [[Writable]]: true, [[Enumerable]]: false, [[Configurable]]: true }
+    unless otherwise specified.
+
+includes: [propertyHelper.js]
+---*/
+
+verifyNotEnumerable(Intl.Collator, "supportedLocalesOf");
+verifyWritable(Intl.Collator, "supportedLocalesOf");
+verifyConfigurable(Intl.Collator, "supportedLocalesOf");
diff --git a/test/intl402/Date/prototype/toLocaleDateString/13.3.2_L15.js b/test/intl402/Date/prototype/toLocaleDateString/13.3.2_L15.js
index 37db01ec25..bf9df2db23 100644
--- a/test/intl402/Date/prototype/toLocaleDateString/13.3.2_L15.js
+++ b/test/intl402/Date/prototype/toLocaleDateString/13.3.2_L15.js
@@ -11,4 +11,4 @@ author: Norbert Lindenberg
 includes: [testBuiltInObject.js]
 ---*/
 
-testBuiltInObject(Date.prototype.toLocaleDateString, true, false, []);
+testBuiltInObject(Date.prototype.toLocaleDateString, true, false);
diff --git a/test/intl402/Date/prototype/toLocaleString/13.3.1_L15.js b/test/intl402/Date/prototype/toLocaleString/13.3.1_L15.js
index 7a874bd41f..3e158c85a1 100644
--- a/test/intl402/Date/prototype/toLocaleString/13.3.1_L15.js
+++ b/test/intl402/Date/prototype/toLocaleString/13.3.1_L15.js
@@ -11,4 +11,4 @@ author: Norbert Lindenberg
 includes: [testBuiltInObject.js]
 ---*/
 
-testBuiltInObject(Date.prototype.toLocaleString, true, false, []);
+testBuiltInObject(Date.prototype.toLocaleString, true, false);
diff --git a/test/intl402/Date/prototype/toLocaleTimeString/13.3.3_L15.js b/test/intl402/Date/prototype/toLocaleTimeString/13.3.3_L15.js
index 333547de70..37ad03f995 100644
--- a/test/intl402/Date/prototype/toLocaleTimeString/13.3.3_L15.js
+++ b/test/intl402/Date/prototype/toLocaleTimeString/13.3.3_L15.js
@@ -11,4 +11,4 @@ author: Norbert Lindenberg
 includes: [testBuiltInObject.js]
 ---*/
 
-testBuiltInObject(Date.prototype.toLocaleTimeString, true, false, []);
+testBuiltInObject(Date.prototype.toLocaleTimeString, true, false);
diff --git a/test/intl402/DateTimeFormat/12.1_L15.js b/test/intl402/DateTimeFormat/12.1_L15.js
index d43864d884..8f54cb06dd 100644
--- a/test/intl402/DateTimeFormat/12.1_L15.js
+++ b/test/intl402/DateTimeFormat/12.1_L15.js
@@ -11,4 +11,4 @@ author: Norbert Lindenberg
 includes: [testBuiltInObject.js]
 ---*/
 
-testBuiltInObject(Intl.DateTimeFormat, true, true, ["supportedLocalesOf"]);
+testBuiltInObject(Intl.DateTimeFormat, true, true);
diff --git a/test/intl402/DateTimeFormat/prop-desc.js b/test/intl402/DateTimeFormat/prop-desc.js
new file mode 100644
index 0000000000..a808d1ea11
--- /dev/null
+++ b/test/intl402/DateTimeFormat/prop-desc.js
@@ -0,0 +1,29 @@
+// Copyright (C) 2017 André Bargull. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+esid: sec-intl.datetimeformat-intro
+description: >
+  "DateTimeFormat" property of Intl.
+info: |
+  Intl.DateTimeFormat (...)
+
+  7 Requirements for Standard Built-in ECMAScript Objects
+
+    Unless specified otherwise in this document, the objects, functions, and constructors
+    described in this standard are subject to the generic requirements and restrictions
+    specified for standard built-in ECMAScript objects in the ECMAScript 2018 Language
+    Specification, 9th edition, clause 17, or successor.
+
+  17 ECMAScript Standard Built-in Objects:
+
+    Every other data property described in clauses 18 through 26 and in Annex B.2 has the
+    attributes { [[Writable]]: true, [[Enumerable]]: false, [[Configurable]]: true }
+    unless otherwise specified.
+
+includes: [propertyHelper.js]
+---*/
+
+verifyNotEnumerable(Intl, "DateTimeFormat");
+verifyWritable(Intl, "DateTimeFormat");
+verifyConfigurable(Intl, "DateTimeFormat");
diff --git a/test/intl402/DateTimeFormat/prototype/12.3_L15.js b/test/intl402/DateTimeFormat/prototype/12.3_L15.js
index 6139fc766f..bf52f6a1fe 100644
--- a/test/intl402/DateTimeFormat/prototype/12.3_L15.js
+++ b/test/intl402/DateTimeFormat/prototype/12.3_L15.js
@@ -11,4 +11,4 @@ author: Norbert Lindenberg
 includes: [testBuiltInObject.js]
 ---*/
 
-testBuiltInObject(Intl.DateTimeFormat.prototype, false, false, ["constructor", "format", "resolvedOptions"]);
+testBuiltInObject(Intl.DateTimeFormat.prototype, false, false);
diff --git a/test/intl402/DateTimeFormat/prototype/constructor/prop-desc.js b/test/intl402/DateTimeFormat/prototype/constructor/prop-desc.js
new file mode 100644
index 0000000000..a4ec0cccd9
--- /dev/null
+++ b/test/intl402/DateTimeFormat/prototype/constructor/prop-desc.js
@@ -0,0 +1,29 @@
+// Copyright (C) 2017 André Bargull. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+esid: sec-intl.datetimeformat.prototype.constructor
+description: >
+  "constructor" property of Intl.DateTimeFormat.prototype.
+info: |
+  Intl.DateTimeFormat.prototype.constructor
+
+  7 Requirements for Standard Built-in ECMAScript Objects
+
+    Unless specified otherwise in this document, the objects, functions, and constructors
+    described in this standard are subject to the generic requirements and restrictions
+    specified for standard built-in ECMAScript objects in the ECMAScript 2018 Language
+    Specification, 9th edition, clause 17, or successor.
+
+  17 ECMAScript Standard Built-in Objects:
+
+    Every other data property described in clauses 18 through 26 and in Annex B.2 has the
+    attributes { [[Writable]]: true, [[Enumerable]]: false, [[Configurable]]: true }
+    unless otherwise specified.
+
+includes: [propertyHelper.js]
+---*/
+
+verifyNotEnumerable(Intl.DateTimeFormat.prototype, "constructor");
+verifyWritable(Intl.DateTimeFormat.prototype, "constructor");
+verifyConfigurable(Intl.DateTimeFormat.prototype, "constructor");
diff --git a/test/intl402/DateTimeFormat/prototype/format/12.3.2_1_a_L15.js b/test/intl402/DateTimeFormat/prototype/format/12.3.2_1_a_L15.js
index 2075027665..5e27231cc4 100644
--- a/test/intl402/DateTimeFormat/prototype/format/12.3.2_1_a_L15.js
+++ b/test/intl402/DateTimeFormat/prototype/format/12.3.2_1_a_L15.js
@@ -12,4 +12,4 @@ author: Norbert Lindenberg
 includes: [testBuiltInObject.js]
 ---*/
 
-testBuiltInObject(new Intl.DateTimeFormat().format, true, false, []);
+testBuiltInObject(new Intl.DateTimeFormat().format, true, false);
diff --git a/test/intl402/DateTimeFormat/prototype/format/12.3.2_L15.js b/test/intl402/DateTimeFormat/prototype/format/12.3.2_L15.js
index 2b11d565e0..0dc3ea1212 100644
--- a/test/intl402/DateTimeFormat/prototype/format/12.3.2_L15.js
+++ b/test/intl402/DateTimeFormat/prototype/format/12.3.2_L15.js
@@ -12,4 +12,4 @@ author: Norbert Lindenberg
 includes: [testBuiltInObject.js]
 ---*/
 
-testBuiltInObject(Object.getOwnPropertyDescriptor(Intl.DateTimeFormat.prototype, "format").get , true, false, []);
+testBuiltInObject(Object.getOwnPropertyDescriptor(Intl.DateTimeFormat.prototype, "format").get , true, false);
diff --git a/test/intl402/DateTimeFormat/prototype/format/prop-desc.js b/test/intl402/DateTimeFormat/prototype/format/prop-desc.js
new file mode 100644
index 0000000000..ff12c9f511
--- /dev/null
+++ b/test/intl402/DateTimeFormat/prototype/format/prop-desc.js
@@ -0,0 +1,35 @@
+// Copyright (C) 2017 André Bargull. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+esid: sec-intl.datetimeformat.prototype.format
+description: >
+  "format" property of Intl.DateTimeFormat.prototype.
+info: |
+  get Intl.DateTimeFormat.prototype.format
+
+  7 Requirements for Standard Built-in ECMAScript Objects
+
+    Unless specified otherwise in this document, the objects, functions, and constructors
+    described in this standard are subject to the generic requirements and restrictions
+    specified for standard built-in ECMAScript objects in the ECMAScript 2018 Language
+    Specification, 9th edition, clause 17, or successor.
+
+  17 ECMAScript Standard Built-in Objects:
+
+    Every accessor property described in clauses 18 through 26 and in Annex B.2 has the
+    attributes { [[Enumerable]]: false, [[Configurable]]: true } unless otherwise specified.
+    If only a get accessor function is described, the set accessor function is the default
+    value, undefined. If only a set accessor is described the get accessor is the default
+    value, undefined.
+
+includes: [propertyHelper.js]
+---*/
+
+var desc = Object.getOwnPropertyDescriptor(Intl.DateTimeFormat.prototype, "format");
+
+assert.sameValue(desc.set, undefined);
+assert.sameValue(typeof desc.get, "function");
+
+verifyNotEnumerable(Intl.DateTimeFormat.prototype, "format");
+verifyConfigurable(Intl.DateTimeFormat.prototype, "format");
diff --git a/test/intl402/DateTimeFormat/prototype/resolvedOptions/12.3.3_L15.js b/test/intl402/DateTimeFormat/prototype/resolvedOptions/12.3.3_L15.js
index e233686212..d38b5b09af 100644
--- a/test/intl402/DateTimeFormat/prototype/resolvedOptions/12.3.3_L15.js
+++ b/test/intl402/DateTimeFormat/prototype/resolvedOptions/12.3.3_L15.js
@@ -11,4 +11,4 @@ author: Norbert Lindenberg
 includes: [testBuiltInObject.js]
 ---*/
 
-testBuiltInObject(Intl.DateTimeFormat.prototype.resolvedOptions, true, false, []);
+testBuiltInObject(Intl.DateTimeFormat.prototype.resolvedOptions, true, false);
diff --git a/test/intl402/DateTimeFormat/prototype/resolvedOptions/prop-desc.js b/test/intl402/DateTimeFormat/prototype/resolvedOptions/prop-desc.js
new file mode 100644
index 0000000000..06e589405c
--- /dev/null
+++ b/test/intl402/DateTimeFormat/prototype/resolvedOptions/prop-desc.js
@@ -0,0 +1,29 @@
+// Copyright (C) 2017 André Bargull. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+esid: sec-intl.datetimeformat.prototype.resolvedoptions
+description: >
+  "resolvedOptions" property of Intl.DateTimeFormat.prototype.
+info: |
+  Intl.DateTimeFormat.prototype.resolvedOptions ()
+
+  7 Requirements for Standard Built-in ECMAScript Objects
+
+    Unless specified otherwise in this document, the objects, functions, and constructors
+    described in this standard are subject to the generic requirements and restrictions
+    specified for standard built-in ECMAScript objects in the ECMAScript 2018 Language
+    Specification, 9th edition, clause 17, or successor.
+
+  17 ECMAScript Standard Built-in Objects:
+
+    Every other data property described in clauses 18 through 26 and in Annex B.2 has the
+    attributes { [[Writable]]: true, [[Enumerable]]: false, [[Configurable]]: true }
+    unless otherwise specified.
+
+includes: [propertyHelper.js]
+---*/
+
+verifyNotEnumerable(Intl.DateTimeFormat.prototype, "resolvedOptions");
+verifyWritable(Intl.DateTimeFormat.prototype, "resolvedOptions");
+verifyConfigurable(Intl.DateTimeFormat.prototype, "resolvedOptions");
diff --git a/test/intl402/DateTimeFormat/supportedLocalesOf/12.2.2_L15.js b/test/intl402/DateTimeFormat/supportedLocalesOf/12.2.2_L15.js
index af65b4960f..62ab1a23f7 100644
--- a/test/intl402/DateTimeFormat/supportedLocalesOf/12.2.2_L15.js
+++ b/test/intl402/DateTimeFormat/supportedLocalesOf/12.2.2_L15.js
@@ -11,4 +11,4 @@ author: Norbert Lindenberg
 includes: [testBuiltInObject.js]
 ---*/
 
-testBuiltInObject(Intl.DateTimeFormat.supportedLocalesOf, true, false, []);
+testBuiltInObject(Intl.DateTimeFormat.supportedLocalesOf, true, false);
diff --git a/test/intl402/DateTimeFormat/supportedLocalesOf/prop-desc.js b/test/intl402/DateTimeFormat/supportedLocalesOf/prop-desc.js
new file mode 100644
index 0000000000..623d09e490
--- /dev/null
+++ b/test/intl402/DateTimeFormat/supportedLocalesOf/prop-desc.js
@@ -0,0 +1,29 @@
+// Copyright (C) 2017 André Bargull. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+esid: sec-intl.datetimeformat.supportedlocalesof
+description: >
+  "supportedLocalesOf" property of Intl.DateTimeFormat.
+info: |
+  Intl.DateTimeFormat.supportedLocalesOf ( locales [ , options ] )
+
+  7 Requirements for Standard Built-in ECMAScript Objects
+
+    Unless specified otherwise in this document, the objects, functions, and constructors
+    described in this standard are subject to the generic requirements and restrictions
+    specified for standard built-in ECMAScript objects in the ECMAScript 2018 Language
+    Specification, 9th edition, clause 17, or successor.
+
+  17 ECMAScript Standard Built-in Objects:
+
+    Every other data property described in clauses 18 through 26 and in Annex B.2 has the
+    attributes { [[Writable]]: true, [[Enumerable]]: false, [[Configurable]]: true }
+    unless otherwise specified.
+
+includes: [propertyHelper.js]
+---*/
+
+verifyNotEnumerable(Intl.DateTimeFormat, "supportedLocalesOf");
+verifyWritable(Intl.DateTimeFormat, "supportedLocalesOf");
+verifyConfigurable(Intl.DateTimeFormat, "supportedLocalesOf");
diff --git a/test/intl402/Intl/8.0_L15.js b/test/intl402/Intl/8.0_L15.js
index cb68bcb0a2..622baa1c9b 100644
--- a/test/intl402/Intl/8.0_L15.js
+++ b/test/intl402/Intl/8.0_L15.js
@@ -11,5 +11,5 @@ author: Norbert Lindenberg
 includes: [testBuiltInObject.js]
 ---*/
 
-testBuiltInObject(this.Intl, false, false, []);
-testBuiltInObject(Intl, false, false, ["Collator", "NumberFormat", "DateTimeFormat"]);
+testBuiltInObject(this.Intl, false, false);
+testBuiltInObject(Intl, false, false);
diff --git a/test/intl402/Number/prototype/toLocaleString/13.2.1_L15.js b/test/intl402/Number/prototype/toLocaleString/13.2.1_L15.js
index 80b61e535b..aec849f832 100644
--- a/test/intl402/Number/prototype/toLocaleString/13.2.1_L15.js
+++ b/test/intl402/Number/prototype/toLocaleString/13.2.1_L15.js
@@ -11,4 +11,4 @@ author: Norbert Lindenberg
 includes: [testBuiltInObject.js]
 ---*/
 
-testBuiltInObject(Number.prototype.toLocaleString, true, false, []);
+testBuiltInObject(Number.prototype.toLocaleString, true, false);
diff --git a/test/intl402/NumberFormat/11.1_L15.js b/test/intl402/NumberFormat/11.1_L15.js
index a9e8a0c6e2..c43589cc6e 100644
--- a/test/intl402/NumberFormat/11.1_L15.js
+++ b/test/intl402/NumberFormat/11.1_L15.js
@@ -11,4 +11,4 @@ author: Norbert Lindenberg
 includes: [testBuiltInObject.js]
 ---*/
 
-testBuiltInObject(Intl.NumberFormat, true, true, ["supportedLocalesOf"]);
+testBuiltInObject(Intl.NumberFormat, true, true);
diff --git a/test/intl402/NumberFormat/prop-desc.js b/test/intl402/NumberFormat/prop-desc.js
new file mode 100644
index 0000000000..e5878a70e9
--- /dev/null
+++ b/test/intl402/NumberFormat/prop-desc.js
@@ -0,0 +1,29 @@
+// Copyright (C) 2017 André Bargull. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+esid: sec-intl.numberformat-intro
+description: >
+  "NumberFormat" property of Intl.
+info: |
+  Intl.NumberFormat (...)
+
+  7 Requirements for Standard Built-in ECMAScript Objects
+
+    Unless specified otherwise in this document, the objects, functions, and constructors
+    described in this standard are subject to the generic requirements and restrictions
+    specified for standard built-in ECMAScript objects in the ECMAScript 2018 Language
+    Specification, 9th edition, clause 17, or successor.
+
+  17 ECMAScript Standard Built-in Objects:
+
+    Every other data property described in clauses 18 through 26 and in Annex B.2 has the
+    attributes { [[Writable]]: true, [[Enumerable]]: false, [[Configurable]]: true }
+    unless otherwise specified.
+
+includes: [propertyHelper.js]
+---*/
+
+verifyNotEnumerable(Intl, "NumberFormat");
+verifyWritable(Intl, "NumberFormat");
+verifyConfigurable(Intl, "NumberFormat");
diff --git a/test/intl402/NumberFormat/prototype/11.3_L15.js b/test/intl402/NumberFormat/prototype/11.3_L15.js
index 12917b1183..a126a07c23 100644
--- a/test/intl402/NumberFormat/prototype/11.3_L15.js
+++ b/test/intl402/NumberFormat/prototype/11.3_L15.js
@@ -11,4 +11,4 @@ author: Norbert Lindenberg
 includes: [testBuiltInObject.js]
 ---*/
 
-testBuiltInObject(Intl.NumberFormat.prototype, false, false, ["constructor", "format", "resolvedOptions"]);
+testBuiltInObject(Intl.NumberFormat.prototype, false, false);
diff --git a/test/intl402/NumberFormat/prototype/constructor/prop-desc.js b/test/intl402/NumberFormat/prototype/constructor/prop-desc.js
new file mode 100644
index 0000000000..90589389c0
--- /dev/null
+++ b/test/intl402/NumberFormat/prototype/constructor/prop-desc.js
@@ -0,0 +1,29 @@
+// Copyright (C) 2017 André Bargull. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+esid: sec-intl.numberformat.prototype.constructor
+description: >
+  "constructor" property of Intl.NumberFormat.prototype.
+info: |
+  Intl.NumberFormat.prototype.constructor
+
+  7 Requirements for Standard Built-in ECMAScript Objects
+
+    Unless specified otherwise in this document, the objects, functions, and constructors
+    described in this standard are subject to the generic requirements and restrictions
+    specified for standard built-in ECMAScript objects in the ECMAScript 2018 Language
+    Specification, 9th edition, clause 17, or successor.
+
+  17 ECMAScript Standard Built-in Objects:
+
+    Every other data property described in clauses 18 through 26 and in Annex B.2 has the
+    attributes { [[Writable]]: true, [[Enumerable]]: false, [[Configurable]]: true }
+    unless otherwise specified.
+
+includes: [propertyHelper.js]
+---*/
+
+verifyNotEnumerable(Intl.NumberFormat.prototype, "constructor");
+verifyWritable(Intl.NumberFormat.prototype, "constructor");
+verifyConfigurable(Intl.NumberFormat.prototype, "constructor");
diff --git a/test/intl402/NumberFormat/prototype/format/11.3.2_1_a_L15.js b/test/intl402/NumberFormat/prototype/format/11.3.2_1_a_L15.js
index 2f4c34c4d6..fc278baaa9 100644
--- a/test/intl402/NumberFormat/prototype/format/11.3.2_1_a_L15.js
+++ b/test/intl402/NumberFormat/prototype/format/11.3.2_1_a_L15.js
@@ -12,4 +12,4 @@ author: Norbert Lindenberg
 includes: [testBuiltInObject.js]
 ---*/
 
-testBuiltInObject(new Intl.NumberFormat().format, true, false, []);
+testBuiltInObject(new Intl.NumberFormat().format, true, false);
diff --git a/test/intl402/NumberFormat/prototype/format/11.3.2_L15.js b/test/intl402/NumberFormat/prototype/format/11.3.2_L15.js
index 0b42c9fa1f..2c7408aedc 100644
--- a/test/intl402/NumberFormat/prototype/format/11.3.2_L15.js
+++ b/test/intl402/NumberFormat/prototype/format/11.3.2_L15.js
@@ -12,4 +12,4 @@ author: Norbert Lindenberg
 includes: [testBuiltInObject.js]
 ---*/
 
-testBuiltInObject(Object.getOwnPropertyDescriptor(Intl.NumberFormat.prototype, "format").get , true, false, []);
+testBuiltInObject(Object.getOwnPropertyDescriptor(Intl.NumberFormat.prototype, "format").get , true, false);
diff --git a/test/intl402/NumberFormat/prototype/format/prop-desc.js b/test/intl402/NumberFormat/prototype/format/prop-desc.js
new file mode 100644
index 0000000000..e6210dd11f
--- /dev/null
+++ b/test/intl402/NumberFormat/prototype/format/prop-desc.js
@@ -0,0 +1,35 @@
+// Copyright (C) 2017 André Bargull. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+esid: sec-intl.numberformat.prototype.format
+description: >
+  "format" property of Intl.NumberFormat.prototype.
+info: |
+  get Intl.NumberFormat.prototype.format
+
+  7 Requirements for Standard Built-in ECMAScript Objects
+
+    Unless specified otherwise in this document, the objects, functions, and constructors
+    described in this standard are subject to the generic requirements and restrictions
+    specified for standard built-in ECMAScript objects in the ECMAScript 2018 Language
+    Specification, 9th edition, clause 17, or successor.
+
+  17 ECMAScript Standard Built-in Objects:
+
+    Every accessor property described in clauses 18 through 26 and in Annex B.2 has the
+    attributes { [[Enumerable]]: false, [[Configurable]]: true } unless otherwise specified.
+    If only a get accessor function is described, the set accessor function is the default
+    value, undefined. If only a set accessor is described the get accessor is the default
+    value, undefined.
+
+includes: [propertyHelper.js]
+---*/
+
+var desc = Object.getOwnPropertyDescriptor(Intl.NumberFormat.prototype, "format");
+
+assert.sameValue(desc.set, undefined);
+assert.sameValue(typeof desc.get, "function");
+
+verifyNotEnumerable(Intl.NumberFormat.prototype, "format");
+verifyConfigurable(Intl.NumberFormat.prototype, "format");
diff --git a/test/intl402/NumberFormat/prototype/resolvedOptions/11.3.3_L15.js b/test/intl402/NumberFormat/prototype/resolvedOptions/11.3.3_L15.js
index 96448a6bf0..113277b886 100644
--- a/test/intl402/NumberFormat/prototype/resolvedOptions/11.3.3_L15.js
+++ b/test/intl402/NumberFormat/prototype/resolvedOptions/11.3.3_L15.js
@@ -11,4 +11,4 @@ author: Norbert Lindenberg
 includes: [testBuiltInObject.js]
 ---*/
 
-testBuiltInObject(Intl.NumberFormat.prototype.resolvedOptions, true, false, []);
+testBuiltInObject(Intl.NumberFormat.prototype.resolvedOptions, true, false);
diff --git a/test/intl402/NumberFormat/prototype/resolvedOptions/prop-desc.js b/test/intl402/NumberFormat/prototype/resolvedOptions/prop-desc.js
new file mode 100644
index 0000000000..17895bf1a6
--- /dev/null
+++ b/test/intl402/NumberFormat/prototype/resolvedOptions/prop-desc.js
@@ -0,0 +1,29 @@
+// Copyright (C) 2017 André Bargull. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+esid: sec-intl.numberformat.prototype.resolvedoptions
+description: >
+  "resolvedOptions" property of Intl.NumberFormat.prototype.
+info: |
+  Intl.NumberFormat.prototype.resolvedOptions ()
+
+  7 Requirements for Standard Built-in ECMAScript Objects
+
+    Unless specified otherwise in this document, the objects, functions, and constructors
+    described in this standard are subject to the generic requirements and restrictions
+    specified for standard built-in ECMAScript objects in the ECMAScript 2018 Language
+    Specification, 9th edition, clause 17, or successor.
+
+  17 ECMAScript Standard Built-in Objects:
+
+    Every other data property described in clauses 18 through 26 and in Annex B.2 has the
+    attributes { [[Writable]]: true, [[Enumerable]]: false, [[Configurable]]: true }
+    unless otherwise specified.
+
+includes: [propertyHelper.js]
+---*/
+
+verifyNotEnumerable(Intl.NumberFormat.prototype, "resolvedOptions");
+verifyWritable(Intl.NumberFormat.prototype, "resolvedOptions");
+verifyConfigurable(Intl.NumberFormat.prototype, "resolvedOptions");
diff --git a/test/intl402/NumberFormat/supportedLocalesOf/11.2.2_L15.js b/test/intl402/NumberFormat/supportedLocalesOf/11.2.2_L15.js
index f28c247bb0..c73331ea2e 100644
--- a/test/intl402/NumberFormat/supportedLocalesOf/11.2.2_L15.js
+++ b/test/intl402/NumberFormat/supportedLocalesOf/11.2.2_L15.js
@@ -11,4 +11,4 @@ author: Norbert Lindenberg
 includes: [testBuiltInObject.js]
 ---*/
 
-testBuiltInObject(Intl.NumberFormat.supportedLocalesOf, true, false, []);
+testBuiltInObject(Intl.NumberFormat.supportedLocalesOf, true, false);
diff --git a/test/intl402/NumberFormat/supportedLocalesOf/prop-desc.js b/test/intl402/NumberFormat/supportedLocalesOf/prop-desc.js
new file mode 100644
index 0000000000..b957d207c4
--- /dev/null
+++ b/test/intl402/NumberFormat/supportedLocalesOf/prop-desc.js
@@ -0,0 +1,29 @@
+// Copyright (C) 2017 André Bargull. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+esid: sec-intl.numberformat.supportedlocalesof
+description: >
+  "supportedLocalesOf" property of Intl.NumberFormat.
+info: |
+  Intl.NumberFormat.supportedLocalesOf ( locales [ , options ] )
+
+  7 Requirements for Standard Built-in ECMAScript Objects
+
+    Unless specified otherwise in this document, the objects, functions, and constructors
+    described in this standard are subject to the generic requirements and restrictions
+    specified for standard built-in ECMAScript objects in the ECMAScript 2018 Language
+    Specification, 9th edition, clause 17, or successor.
+
+  17 ECMAScript Standard Built-in Objects:
+
+    Every other data property described in clauses 18 through 26 and in Annex B.2 has the
+    attributes { [[Writable]]: true, [[Enumerable]]: false, [[Configurable]]: true }
+    unless otherwise specified.
+
+includes: [propertyHelper.js]
+---*/
+
+verifyNotEnumerable(Intl.NumberFormat, "supportedLocalesOf");
+verifyWritable(Intl.NumberFormat, "supportedLocalesOf");
+verifyConfigurable(Intl.NumberFormat, "supportedLocalesOf");
diff --git a/test/intl402/PluralRules/builtin.js b/test/intl402/PluralRules/builtin.js
index 320ea42531..4c6b53db9d 100644
--- a/test/intl402/PluralRules/builtin.js
+++ b/test/intl402/PluralRules/builtin.js
@@ -11,4 +11,4 @@ author: Zibi Braniecki
 includes: [testBuiltInObject.js]
 ---*/
 
-testBuiltInObject(Intl.PluralRules, true, true, ["supportedLocalesOf"]);
+testBuiltInObject(Intl.PluralRules, true, true);
diff --git a/test/intl402/PluralRules/prototype/builtins.js b/test/intl402/PluralRules/prototype/builtins.js
index 8e66ba4aa2..27812e876f 100644
--- a/test/intl402/PluralRules/prototype/builtins.js
+++ b/test/intl402/PluralRules/prototype/builtins.js
@@ -11,4 +11,4 @@ author: Zibi Braniecki
 includes: [testBuiltInObject.js]
 ---*/
 
-testBuiltInObject(Intl.PluralRules.prototype, false, false, ["constructor", "select", "resolvedOptions"]);
+testBuiltInObject(Intl.PluralRules.prototype, false, false);
diff --git a/test/intl402/PluralRules/prototype/constructor/prop-desc.js b/test/intl402/PluralRules/prototype/constructor/prop-desc.js
new file mode 100644
index 0000000000..de8f2be139
--- /dev/null
+++ b/test/intl402/PluralRules/prototype/constructor/prop-desc.js
@@ -0,0 +1,29 @@
+// Copyright (C) 2017 André Bargull. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+esid: sec-intl.pluralrules.prototype.constructor
+description: >
+  "constructor" property of Intl.PluralRules.prototype.
+info: |
+  Intl.PluralRules.prototype.constructor
+
+  7 Requirements for Standard Built-in ECMAScript Objects
+
+    Unless specified otherwise in this document, the objects, functions, and constructors
+    described in this standard are subject to the generic requirements and restrictions
+    specified for standard built-in ECMAScript objects in the ECMAScript 2018 Language
+    Specification, 9th edition, clause 17, or successor.
+
+  17 ECMAScript Standard Built-in Objects:
+
+    Every other data property described in clauses 18 through 26 and in Annex B.2 has the
+    attributes { [[Writable]]: true, [[Enumerable]]: false, [[Configurable]]: true }
+    unless otherwise specified.
+
+includes: [propertyHelper.js]
+---*/
+
+verifyNotEnumerable(Intl.PluralRules.prototype, "constructor");
+verifyWritable(Intl.PluralRules.prototype, "constructor");
+verifyConfigurable(Intl.PluralRules.prototype, "constructor");
diff --git a/test/intl402/PluralRules/prototype/resolvedOptions/builtins.js b/test/intl402/PluralRules/prototype/resolvedOptions/builtins.js
index 6686d24257..442c8033f8 100644
--- a/test/intl402/PluralRules/prototype/resolvedOptions/builtins.js
+++ b/test/intl402/PluralRules/prototype/resolvedOptions/builtins.js
@@ -11,4 +11,4 @@ author: Zibi Braniecki
 includes: [testBuiltInObject.js]
 ---*/
 
-testBuiltInObject(Intl.PluralRules.prototype.resolvedOptions, true, false, []);
+testBuiltInObject(Intl.PluralRules.prototype.resolvedOptions, true, false);
diff --git a/test/intl402/PluralRules/prototype/resolvedOptions/prop-desc.js b/test/intl402/PluralRules/prototype/resolvedOptions/prop-desc.js
new file mode 100644
index 0000000000..fc99c6d76d
--- /dev/null
+++ b/test/intl402/PluralRules/prototype/resolvedOptions/prop-desc.js
@@ -0,0 +1,29 @@
+// Copyright (C) 2017 André Bargull. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+esid: sec-intl.pluralrules.prototype.resolvedoptions
+description: >
+  "resolvedOptions" property of Intl.PluralRules.prototype.
+info: |
+  Intl.PluralRules.prototype.resolvedOptions ()
+
+  7 Requirements for Standard Built-in ECMAScript Objects
+
+    Unless specified otherwise in this document, the objects, functions, and constructors
+    described in this standard are subject to the generic requirements and restrictions
+    specified for standard built-in ECMAScript objects in the ECMAScript 2018 Language
+    Specification, 9th edition, clause 17, or successor.
+
+  17 ECMAScript Standard Built-in Objects:
+
+    Every other data property described in clauses 18 through 26 and in Annex B.2 has the
+    attributes { [[Writable]]: true, [[Enumerable]]: false, [[Configurable]]: true }
+    unless otherwise specified.
+
+includes: [propertyHelper.js]
+---*/
+
+verifyNotEnumerable(Intl.PluralRules.prototype, "resolvedOptions");
+verifyWritable(Intl.PluralRules.prototype, "resolvedOptions");
+verifyConfigurable(Intl.PluralRules.prototype, "resolvedOptions");
diff --git a/test/intl402/PluralRules/prototype/select/prop-desc.js b/test/intl402/PluralRules/prototype/select/prop-desc.js
new file mode 100644
index 0000000000..22ed8a88ca
--- /dev/null
+++ b/test/intl402/PluralRules/prototype/select/prop-desc.js
@@ -0,0 +1,29 @@
+// Copyright (C) 2017 André Bargull. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+esid: sec-intl.pluralrules.prototype.select
+description: >
+  "select" property of Intl.PluralRules.prototype.
+info: |
+  Intl.PluralRules.prototype.select( value )
+
+  7 Requirements for Standard Built-in ECMAScript Objects
+
+    Unless specified otherwise in this document, the objects, functions, and constructors
+    described in this standard are subject to the generic requirements and restrictions
+    specified for standard built-in ECMAScript objects in the ECMAScript 2018 Language
+    Specification, 9th edition, clause 17, or successor.
+
+  17 ECMAScript Standard Built-in Objects:
+
+    Every other data property described in clauses 18 through 26 and in Annex B.2 has the
+    attributes { [[Writable]]: true, [[Enumerable]]: false, [[Configurable]]: true }
+    unless otherwise specified.
+
+includes: [propertyHelper.js]
+---*/
+
+verifyNotEnumerable(Intl.PluralRules.prototype, "select");
+verifyWritable(Intl.PluralRules.prototype, "select");
+verifyConfigurable(Intl.PluralRules.prototype, "select");
diff --git a/test/intl402/PluralRules/supportedLocalesOf/prop-desc.js b/test/intl402/PluralRules/supportedLocalesOf/prop-desc.js
new file mode 100644
index 0000000000..321eafce26
--- /dev/null
+++ b/test/intl402/PluralRules/supportedLocalesOf/prop-desc.js
@@ -0,0 +1,29 @@
+// Copyright (C) 2017 André Bargull. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+esid: sec-intl.pluralrules.supportedlocalesof
+description: >
+  "supportedLocalesOf" property of Intl.PluralRules.
+info: |
+  Intl.PluralRules.supportedLocalesOf ( locales [ , options ] )
+
+  7 Requirements for Standard Built-in ECMAScript Objects
+
+    Unless specified otherwise in this document, the objects, functions, and constructors
+    described in this standard are subject to the generic requirements and restrictions
+    specified for standard built-in ECMAScript objects in the ECMAScript 2018 Language
+    Specification, 9th edition, clause 17, or successor.
+
+  17 ECMAScript Standard Built-in Objects:
+
+    Every other data property described in clauses 18 through 26 and in Annex B.2 has the
+    attributes { [[Writable]]: true, [[Enumerable]]: false, [[Configurable]]: true }
+    unless otherwise specified.
+
+includes: [propertyHelper.js]
+---*/
+
+verifyNotEnumerable(Intl.PluralRules, "supportedLocalesOf");
+verifyWritable(Intl.PluralRules, "supportedLocalesOf");
+verifyConfigurable(Intl.PluralRules, "supportedLocalesOf");
diff --git a/test/intl402/PluralRules/supportedLocalesOf/supportedLocalesOf.js b/test/intl402/PluralRules/supportedLocalesOf/supportedLocalesOf.js
index af25e04067..7115f6d139 100644
--- a/test/intl402/PluralRules/supportedLocalesOf/supportedLocalesOf.js
+++ b/test/intl402/PluralRules/supportedLocalesOf/supportedLocalesOf.js
@@ -11,4 +11,4 @@ author: Zibi Braniecki
 includes: [testBuiltInObject.js]
 ---*/
 
-testBuiltInObject(Intl.PluralRules.supportedLocalesOf, true, false, []);
+testBuiltInObject(Intl.PluralRules.supportedLocalesOf, true, false);
diff --git a/test/intl402/String/prototype/localeCompare/13.1.1_L15.js b/test/intl402/String/prototype/localeCompare/13.1.1_L15.js
index a3564db9eb..624d4a3b90 100644
--- a/test/intl402/String/prototype/localeCompare/13.1.1_L15.js
+++ b/test/intl402/String/prototype/localeCompare/13.1.1_L15.js
@@ -11,4 +11,4 @@ author: Norbert Lindenberg
 includes: [testBuiltInObject.js]
 ---*/
 
-testBuiltInObject(String.prototype.localeCompare, true, false, []);
+testBuiltInObject(String.prototype.localeCompare, true, false);
-- 
GitLab