From 513a3056fb4da9be59346d8126e38d81e7e98272 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:24 -0800
Subject: [PATCH] Add separate test files to test the length property of Intl
 functions

---
 harness/testBuiltInObject.js                  | 27 +--------------
 test/intl402/Collator/10.1_L15.js             |  2 +-
 test/intl402/Collator/length.js               | 31 +++++++++++++++++
 .../prototype/compare/10.3.2_1_a_L15.js       |  2 +-
 .../Collator/prototype/compare/10.3.2_L15.js  |  2 +-
 .../compare/compare-function-length.js        | 28 ++++++++++++++++
 .../Collator/prototype/compare/length.js      | 33 +++++++++++++++++++
 .../prototype/resolvedOptions/10.3.3_L15.js   |  2 +-
 .../prototype/resolvedOptions/length.js       | 31 +++++++++++++++++
 .../Collator/supportedLocalesOf/10.2.2_L15.js |  2 +-
 .../Collator/supportedLocalesOf/length.js     | 31 +++++++++++++++++
 .../toLocaleDateString/13.3.2_L15.js          |  2 +-
 .../prototype/toLocaleDateString/length.js    | 31 +++++++++++++++++
 .../prototype/toLocaleString/13.3.1_L15.js    |  2 +-
 .../Date/prototype/toLocaleString/length.js   | 31 +++++++++++++++++
 .../toLocaleTimeString/13.3.3_L15.js          |  2 +-
 .../prototype/toLocaleTimeString/length.js    | 31 +++++++++++++++++
 test/intl402/DateTimeFormat/12.1_L15.js       |  2 +-
 test/intl402/DateTimeFormat/length.js         | 31 +++++++++++++++++
 .../prototype/format/12.3.2_1_a_L15.js        |  2 +-
 .../prototype/format/12.3.2_L15.js            |  2 +-
 .../format/format-function-length.js          | 28 ++++++++++++++++
 .../DateTimeFormat/prototype/format/length.js | 33 +++++++++++++++++++
 .../prototype/resolvedOptions/12.3.3_L15.js   |  2 +-
 .../prototype/resolvedOptions/length.js       | 31 +++++++++++++++++
 .../supportedLocalesOf/12.2.2_L15.js          |  2 +-
 .../supportedLocalesOf/length.js              | 31 +++++++++++++++++
 .../prototype/toLocaleString/13.2.1_L15.js    |  2 +-
 .../Number/prototype/toLocaleString/length.js | 31 +++++++++++++++++
 test/intl402/NumberFormat/11.1_L15.js         |  2 +-
 test/intl402/NumberFormat/length.js           | 31 +++++++++++++++++
 .../prototype/format/11.3.2_1_a_L15.js        |  2 +-
 .../prototype/format/11.3.2_L15.js            |  2 +-
 .../format/format-function-length.js          | 28 ++++++++++++++++
 .../NumberFormat/prototype/format/length.js   | 33 +++++++++++++++++++
 .../prototype/resolvedOptions/11.3.3_L15.js   |  2 +-
 .../prototype/resolvedOptions/length.js       | 31 +++++++++++++++++
 .../supportedLocalesOf/11.2.2_L15.js          |  2 +-
 .../NumberFormat/supportedLocalesOf/length.js | 31 +++++++++++++++++
 test/intl402/PluralRules/builtin.js           |  2 +-
 .../prototype/resolvedOptions/builtins.js     |  2 +-
 .../prototype/resolvedOptions/length.js       | 31 +++++++++++++++++
 .../PluralRules/prototype/select/length.js    | 31 +++++++++++++++++
 .../PluralRules/supportedLocalesOf/length.js  | 31 +++++++++++++++++
 .../supportedLocalesOf/supportedLocalesOf.js  |  2 +-
 .../prototype/localeCompare/13.1.1_L15.js     |  2 +-
 .../String/prototype/localeCompare/length.js  | 31 +++++++++++++++++
 47 files changed, 734 insertions(+), 49 deletions(-)
 create mode 100644 test/intl402/Collator/length.js
 create mode 100644 test/intl402/Collator/prototype/compare/compare-function-length.js
 create mode 100644 test/intl402/Collator/prototype/compare/length.js
 create mode 100644 test/intl402/Collator/prototype/resolvedOptions/length.js
 create mode 100644 test/intl402/Collator/supportedLocalesOf/length.js
 create mode 100644 test/intl402/Date/prototype/toLocaleDateString/length.js
 create mode 100644 test/intl402/Date/prototype/toLocaleString/length.js
 create mode 100644 test/intl402/Date/prototype/toLocaleTimeString/length.js
 create mode 100644 test/intl402/DateTimeFormat/length.js
 create mode 100644 test/intl402/DateTimeFormat/prototype/format/format-function-length.js
 create mode 100644 test/intl402/DateTimeFormat/prototype/format/length.js
 create mode 100644 test/intl402/DateTimeFormat/prototype/resolvedOptions/length.js
 create mode 100644 test/intl402/DateTimeFormat/supportedLocalesOf/length.js
 create mode 100644 test/intl402/Number/prototype/toLocaleString/length.js
 create mode 100644 test/intl402/NumberFormat/length.js
 create mode 100644 test/intl402/NumberFormat/prototype/format/format-function-length.js
 create mode 100644 test/intl402/NumberFormat/prototype/format/length.js
 create mode 100644 test/intl402/NumberFormat/prototype/resolvedOptions/length.js
 create mode 100644 test/intl402/NumberFormat/supportedLocalesOf/length.js
 create mode 100644 test/intl402/PluralRules/prototype/resolvedOptions/length.js
 create mode 100644 test/intl402/PluralRules/prototype/select/length.js
 create mode 100644 test/intl402/PluralRules/supportedLocalesOf/length.js
 create mode 100644 test/intl402/String/prototype/localeCompare/length.js

diff --git a/harness/testBuiltInObject.js b/harness/testBuiltInObject.js
index c78c0d732a..95fa2d3f6b 100644
--- a/harness/testBuiltInObject.js
+++ b/harness/testBuiltInObject.js
@@ -13,12 +13,10 @@ description: |
  * @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.
- * @param {number} length for functions only: the length specified for the function
- *   or derived from the argument list.
  * @author Norbert Lindenberg
  */
 
-function testBuiltInObject(obj, isFunction, isConstructor, properties, length) {
+function testBuiltInObject(obj, isFunction, isConstructor, properties) {
 
   if (obj === undefined) {
     $ERROR("Object being tested is undefined.");
@@ -55,29 +53,6 @@ function testBuiltInObject(obj, isFunction, isConstructor, properties, length) {
   // verification of the absence of the prototype property has
   // been moved to the end of the test
 
-  if (isFunction) {
-
-    if (typeof obj.length !== "number" || obj.length !== Math.floor(obj.length)) {
-      $ERROR("Built-in functions must have a length property with an integer value.");
-    }
-
-    if (obj.length !== length) {
-      $ERROR("Function's length property doesn't have specified value; expected " +
-        length + ", got " + obj.length + ".");
-    }
-
-    var desc = Object.getOwnPropertyDescriptor(obj, "length");
-    if (desc.writable) {
-      $ERROR("The length property of a built-in function must not be writable.");
-    }
-    if (desc.enumerable) {
-      $ERROR("The length property of a built-in function must not be enumerable.");
-    }
-    if (!desc.configurable) {
-      $ERROR("The length property of a built-in function must be configurable.");
-    }
-  }
-
   properties.forEach(function(prop) {
     var desc = Object.getOwnPropertyDescriptor(obj, prop);
     if (desc === undefined) {
diff --git a/test/intl402/Collator/10.1_L15.js b/test/intl402/Collator/10.1_L15.js
index 3446d7cfe0..2f08ccd2af 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"], 0);
+testBuiltInObject(Intl.Collator, true, true, ["supportedLocalesOf"]);
diff --git a/test/intl402/Collator/length.js b/test/intl402/Collator/length.js
new file mode 100644
index 0000000000..7ac33bce9e
--- /dev/null
+++ b/test/intl402/Collator/length.js
@@ -0,0 +1,31 @@
+// 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
+description: >
+  Intl.Collator.length is 0.
+info: |
+  Intl.Collator ( [ locales [ , options ] ] )
+
+  17 ECMAScript Standard Built-in Objects:
+
+    Every built-in function object, including constructors, has a length
+    property whose value is an integer. Unless otherwise specified, this
+    value is equal to the largest number of named arguments shown in the
+    subclause headings for the function description. Optional parameters
+    (which are indicated with brackets: [ ]) or rest parameters (which
+    are shown using the form «...name») are not included in the default
+    argument count.
+    Unless otherwise specified, the length property of a built-in function
+    object has the attributes { [[Writable]]: false, [[Enumerable]]: false,
+    [[Configurable]]: true }.
+
+includes: [propertyHelper.js]
+---*/
+
+assert.sameValue(Intl.Collator.length, 0);
+
+verifyNotEnumerable(Intl.Collator, "length");
+verifyNotWritable(Intl.Collator, "length");
+verifyConfigurable(Intl.Collator, "length");
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 657845eaac..6f5920e7be 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, [], 2);
+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 f83d063d28..5f11db40dc 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, [], 0);
+testBuiltInObject(Object.getOwnPropertyDescriptor(Intl.Collator.prototype, "compare").get , true, false, []);
diff --git a/test/intl402/Collator/prototype/compare/compare-function-length.js b/test/intl402/Collator/prototype/compare/compare-function-length.js
new file mode 100644
index 0000000000..2860bd2bc3
--- /dev/null
+++ b/test/intl402/Collator/prototype/compare/compare-function-length.js
@@ -0,0 +1,28 @@
+// 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.compare
+description: >
+  The length of the bound Collator compare function is 2.
+info: |
+  get Intl.Collator.prototype.compare
+
+  ...
+  4. If collator.[[BoundCompare]] is undefined, then
+    a. Let F be a new built-in function object as defined in 10.3.4.
+    b. Let bc be BoundFunctionCreate(F, collator, « »).
+    c. Perform ! DefinePropertyOrThrow(bc, "length", PropertyDescriptor {[[Value]]: 2,
+       [[Writable]]: false, [[Enumerable]]: false, [[Configurable]]: true}).
+    ...
+
+includes: [propertyHelper.js]
+---*/
+
+var compareFn = new Intl.Collator().compare;
+
+assert.sameValue(compareFn.length, 2);
+
+verifyNotEnumerable(compareFn, "length");
+verifyNotWritable(compareFn, "length");
+verifyConfigurable(compareFn, "length");
diff --git a/test/intl402/Collator/prototype/compare/length.js b/test/intl402/Collator/prototype/compare/length.js
new file mode 100644
index 0000000000..b17ba62ccd
--- /dev/null
+++ b/test/intl402/Collator/prototype/compare/length.js
@@ -0,0 +1,33 @@
+// 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.compare
+description: >
+  get Intl.Collator.prototype.compare.length is 0.
+info: |
+  get Intl.Collator.prototype.compare
+
+  17 ECMAScript Standard Built-in Objects:
+
+    Every built-in function object, including constructors, has a length
+    property whose value is an integer. Unless otherwise specified, this
+    value is equal to the largest number of named arguments shown in the
+    subclause headings for the function description. Optional parameters
+    (which are indicated with brackets: [ ]) or rest parameters (which
+    are shown using the form «...name») are not included in the default
+    argument count.
+    Unless otherwise specified, the length property of a built-in function
+    object has the attributes { [[Writable]]: false, [[Enumerable]]: false,
+    [[Configurable]]: true }.
+
+includes: [propertyHelper.js]
+---*/
+
+var desc = Object.getOwnPropertyDescriptor(Intl.Collator.prototype, "compare");
+
+assert.sameValue(desc.get.length, 0);
+
+verifyNotEnumerable(desc.get, "length");
+verifyNotWritable(desc.get, "length");
+verifyConfigurable(desc.get, "length");
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 59792f058c..2c9238cde9 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, [], 0);
+testBuiltInObject(Intl.Collator.prototype.resolvedOptions, true, false, []);
diff --git a/test/intl402/Collator/prototype/resolvedOptions/length.js b/test/intl402/Collator/prototype/resolvedOptions/length.js
new file mode 100644
index 0000000000..9307dc5041
--- /dev/null
+++ b/test/intl402/Collator/prototype/resolvedOptions/length.js
@@ -0,0 +1,31 @@
+// 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: >
+  Intl.Collator.prototype.resolvedOptions.length is 0.
+info: |
+  Intl.Collator.prototype.resolvedOptions ()
+
+  17 ECMAScript Standard Built-in Objects:
+
+    Every built-in function object, including constructors, has a length
+    property whose value is an integer. Unless otherwise specified, this
+    value is equal to the largest number of named arguments shown in the
+    subclause headings for the function description. Optional parameters
+    (which are indicated with brackets: [ ]) or rest parameters (which
+    are shown using the form «...name») are not included in the default
+    argument count.
+    Unless otherwise specified, the length property of a built-in function
+    object has the attributes { [[Writable]]: false, [[Enumerable]]: false,
+    [[Configurable]]: true }.
+
+includes: [propertyHelper.js]
+---*/
+
+assert.sameValue(Intl.Collator.prototype.resolvedOptions.length, 0);
+
+verifyNotEnumerable(Intl.Collator.prototype.resolvedOptions, "length");
+verifyNotWritable(Intl.Collator.prototype.resolvedOptions, "length");
+verifyConfigurable(Intl.Collator.prototype.resolvedOptions, "length");
diff --git a/test/intl402/Collator/supportedLocalesOf/10.2.2_L15.js b/test/intl402/Collator/supportedLocalesOf/10.2.2_L15.js
index c5c41db3ae..870b90f569 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, [], 1);
+testBuiltInObject(Intl.Collator.supportedLocalesOf, true, false, []);
diff --git a/test/intl402/Collator/supportedLocalesOf/length.js b/test/intl402/Collator/supportedLocalesOf/length.js
new file mode 100644
index 0000000000..b60708f254
--- /dev/null
+++ b/test/intl402/Collator/supportedLocalesOf/length.js
@@ -0,0 +1,31 @@
+// 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: >
+  Intl.Collator.supportedLocalesOf.length is 1.
+info: |
+  Intl.Collator.supportedLocalesOf ( locales [ , options ] )
+
+  17 ECMAScript Standard Built-in Objects:
+
+    Every built-in function object, including constructors, has a length
+    property whose value is an integer. Unless otherwise specified, this
+    value is equal to the largest number of named arguments shown in the
+    subclause headings for the function description. Optional parameters
+    (which are indicated with brackets: [ ]) or rest parameters (which
+    are shown using the form «...name») are not included in the default
+    argument count.
+    Unless otherwise specified, the length property of a built-in function
+    object has the attributes { [[Writable]]: false, [[Enumerable]]: false,
+    [[Configurable]]: true }.
+
+includes: [propertyHelper.js]
+---*/
+
+assert.sameValue(Intl.Collator.supportedLocalesOf.length, 1);
+
+verifyNotEnumerable(Intl.Collator.supportedLocalesOf, "length");
+verifyNotWritable(Intl.Collator.supportedLocalesOf, "length");
+verifyConfigurable(Intl.Collator.supportedLocalesOf, "length");
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 277e109cfb..37db01ec25 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, [], 0);
+testBuiltInObject(Date.prototype.toLocaleDateString, true, false, []);
diff --git a/test/intl402/Date/prototype/toLocaleDateString/length.js b/test/intl402/Date/prototype/toLocaleDateString/length.js
new file mode 100644
index 0000000000..cbb2136be9
--- /dev/null
+++ b/test/intl402/Date/prototype/toLocaleDateString/length.js
@@ -0,0 +1,31 @@
+// Copyright (C) 2017 André Bargull. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+esid: sup-date.prototype.tolocaledatestring
+description: >
+  Date.prototype.toLocaleDateString.length is 0.
+info: |
+  Date.prototype.toLocaleDateString ( [ locales [ , options ] ] )
+
+  17 ECMAScript Standard Built-in Objects:
+
+    Every built-in function object, including constructors, has a length
+    property whose value is an integer. Unless otherwise specified, this
+    value is equal to the largest number of named arguments shown in the
+    subclause headings for the function description. Optional parameters
+    (which are indicated with brackets: [ ]) or rest parameters (which
+    are shown using the form «...name») are not included in the default
+    argument count.
+    Unless otherwise specified, the length property of a built-in function
+    object has the attributes { [[Writable]]: false, [[Enumerable]]: false,
+    [[Configurable]]: true }.
+
+includes: [propertyHelper.js]
+---*/
+
+assert.sameValue(Date.prototype.toLocaleDateString.length, 0);
+
+verifyNotEnumerable(Date.prototype.toLocaleDateString, "length");
+verifyNotWritable(Date.prototype.toLocaleDateString, "length");
+verifyConfigurable(Date.prototype.toLocaleDateString, "length");
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 bd49202ec7..7a874bd41f 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, [], 0);
+testBuiltInObject(Date.prototype.toLocaleString, true, false, []);
diff --git a/test/intl402/Date/prototype/toLocaleString/length.js b/test/intl402/Date/prototype/toLocaleString/length.js
new file mode 100644
index 0000000000..0a1afc5ddb
--- /dev/null
+++ b/test/intl402/Date/prototype/toLocaleString/length.js
@@ -0,0 +1,31 @@
+// Copyright (C) 2017 André Bargull. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+esid: sup-date.prototype.tolocalestring
+description: >
+  Date.prototype.toLocaleString.length is 0.
+info: |
+  Date.prototype.toLocaleString ( [ locales [ , options ] ] )
+
+  17 ECMAScript Standard Built-in Objects:
+
+    Every built-in function object, including constructors, has a length
+    property whose value is an integer. Unless otherwise specified, this
+    value is equal to the largest number of named arguments shown in the
+    subclause headings for the function description. Optional parameters
+    (which are indicated with brackets: [ ]) or rest parameters (which
+    are shown using the form «...name») are not included in the default
+    argument count.
+    Unless otherwise specified, the length property of a built-in function
+    object has the attributes { [[Writable]]: false, [[Enumerable]]: false,
+    [[Configurable]]: true }.
+
+includes: [propertyHelper.js]
+---*/
+
+assert.sameValue(Date.prototype.toLocaleString.length, 0);
+
+verifyNotEnumerable(Date.prototype.toLocaleString, "length");
+verifyNotWritable(Date.prototype.toLocaleString, "length");
+verifyConfigurable(Date.prototype.toLocaleString, "length");
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 e5a33ffe07..333547de70 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, [], 0);
+testBuiltInObject(Date.prototype.toLocaleTimeString, true, false, []);
diff --git a/test/intl402/Date/prototype/toLocaleTimeString/length.js b/test/intl402/Date/prototype/toLocaleTimeString/length.js
new file mode 100644
index 0000000000..778033e69e
--- /dev/null
+++ b/test/intl402/Date/prototype/toLocaleTimeString/length.js
@@ -0,0 +1,31 @@
+// Copyright (C) 2017 André Bargull. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+esid: sup-date.prototype.tolocaletimestring
+description: >
+  Date.prototype.toLocaleTimeString.length is 0.
+info: |
+  Date.prototype.toLocaleTimeString ( [ locales [ , options ] ] )
+
+  17 ECMAScript Standard Built-in Objects:
+
+    Every built-in function object, including constructors, has a length
+    property whose value is an integer. Unless otherwise specified, this
+    value is equal to the largest number of named arguments shown in the
+    subclause headings for the function description. Optional parameters
+    (which are indicated with brackets: [ ]) or rest parameters (which
+    are shown using the form «...name») are not included in the default
+    argument count.
+    Unless otherwise specified, the length property of a built-in function
+    object has the attributes { [[Writable]]: false, [[Enumerable]]: false,
+    [[Configurable]]: true }.
+
+includes: [propertyHelper.js]
+---*/
+
+assert.sameValue(Date.prototype.toLocaleTimeString.length, 0);
+
+verifyNotEnumerable(Date.prototype.toLocaleTimeString, "length");
+verifyNotWritable(Date.prototype.toLocaleTimeString, "length");
+verifyConfigurable(Date.prototype.toLocaleTimeString, "length");
diff --git a/test/intl402/DateTimeFormat/12.1_L15.js b/test/intl402/DateTimeFormat/12.1_L15.js
index 3ff0986b20..d43864d884 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"], 0);
+testBuiltInObject(Intl.DateTimeFormat, true, true, ["supportedLocalesOf"]);
diff --git a/test/intl402/DateTimeFormat/length.js b/test/intl402/DateTimeFormat/length.js
new file mode 100644
index 0000000000..7eb21739af
--- /dev/null
+++ b/test/intl402/DateTimeFormat/length.js
@@ -0,0 +1,31 @@
+// 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
+description: >
+  Intl.DateTimeFormat.length is 0.
+info: |
+  Intl.DateTimeFormat ( [ locales [ , options ] ] )
+
+  17 ECMAScript Standard Built-in Objects:
+
+    Every built-in function object, including constructors, has a length
+    property whose value is an integer. Unless otherwise specified, this
+    value is equal to the largest number of named arguments shown in the
+    subclause headings for the function description. Optional parameters
+    (which are indicated with brackets: [ ]) or rest parameters (which
+    are shown using the form «...name») are not included in the default
+    argument count.
+    Unless otherwise specified, the length property of a built-in function
+    object has the attributes { [[Writable]]: false, [[Enumerable]]: false,
+    [[Configurable]]: true }.
+
+includes: [propertyHelper.js]
+---*/
+
+assert.sameValue(Intl.DateTimeFormat.length, 0);
+
+verifyNotEnumerable(Intl.DateTimeFormat, "length");
+verifyNotWritable(Intl.DateTimeFormat, "length");
+verifyConfigurable(Intl.DateTimeFormat, "length");
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 fbb850a9c8..2075027665 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, [], 1);
+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 18a216e611..2b11d565e0 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, [], 0);
+testBuiltInObject(Object.getOwnPropertyDescriptor(Intl.DateTimeFormat.prototype, "format").get , true, false, []);
diff --git a/test/intl402/DateTimeFormat/prototype/format/format-function-length.js b/test/intl402/DateTimeFormat/prototype/format/format-function-length.js
new file mode 100644
index 0000000000..e7af4121c6
--- /dev/null
+++ b/test/intl402/DateTimeFormat/prototype/format/format-function-length.js
@@ -0,0 +1,28 @@
+// 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: >
+  The length of the bound DateTime Format function is 1.
+info: |
+  get Intl.DateTimeFormat.prototype.format
+
+  ...
+  4. If dtf.[[BoundFormat]] is undefined, then
+    a. Let F be a new built-in function object as defined in DateTime Format Functions (12.1.5).
+    b. Let bf be BoundFunctionCreate(F, dft, « »).
+    c. Perform ! DefinePropertyOrThrow(bf, "length", PropertyDescriptor {[[Value]]: 1,
+       [[Writable]]: false, [[Enumerable]]: false, [[Configurable]]: true}).
+    ...
+
+includes: [propertyHelper.js]
+---*/
+
+var formatFn = new Intl.DateTimeFormat().format;
+
+assert.sameValue(formatFn.length, 1);
+
+verifyNotEnumerable(formatFn, "length");
+verifyNotWritable(formatFn, "length");
+verifyConfigurable(formatFn, "length");
diff --git a/test/intl402/DateTimeFormat/prototype/format/length.js b/test/intl402/DateTimeFormat/prototype/format/length.js
new file mode 100644
index 0000000000..8c36d0d26a
--- /dev/null
+++ b/test/intl402/DateTimeFormat/prototype/format/length.js
@@ -0,0 +1,33 @@
+// 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: >
+  get Intl.DateTimeFormat.prototype.format.length is 0.
+info: |
+  get Intl.DateTimeFormat.prototype.format
+
+  17 ECMAScript Standard Built-in Objects:
+
+    Every built-in function object, including constructors, has a length
+    property whose value is an integer. Unless otherwise specified, this
+    value is equal to the largest number of named arguments shown in the
+    subclause headings for the function description. Optional parameters
+    (which are indicated with brackets: [ ]) or rest parameters (which
+    are shown using the form «...name») are not included in the default
+    argument count.
+    Unless otherwise specified, the length property of a built-in function
+    object has the attributes { [[Writable]]: false, [[Enumerable]]: false,
+    [[Configurable]]: true }.
+
+includes: [propertyHelper.js]
+---*/
+
+var desc = Object.getOwnPropertyDescriptor(Intl.DateTimeFormat.prototype, "format");
+
+assert.sameValue(desc.get.length, 0);
+
+verifyNotEnumerable(desc.get, "length");
+verifyNotWritable(desc.get, "length");
+verifyConfigurable(desc.get, "length");
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 9ba1f1e6bb..e233686212 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, [], 0);
+testBuiltInObject(Intl.DateTimeFormat.prototype.resolvedOptions, true, false, []);
diff --git a/test/intl402/DateTimeFormat/prototype/resolvedOptions/length.js b/test/intl402/DateTimeFormat/prototype/resolvedOptions/length.js
new file mode 100644
index 0000000000..2ee86de93b
--- /dev/null
+++ b/test/intl402/DateTimeFormat/prototype/resolvedOptions/length.js
@@ -0,0 +1,31 @@
+// 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: >
+  Intl.DateTimeFormat.prototype.resolvedOptions.length is 0.
+info: |
+  Intl.DateTimeFormat.prototype.resolvedOptions ()
+
+  17 ECMAScript Standard Built-in Objects:
+
+    Every built-in function object, including constructors, has a length
+    property whose value is an integer. Unless otherwise specified, this
+    value is equal to the largest number of named arguments shown in the
+    subclause headings for the function description. Optional parameters
+    (which are indicated with brackets: [ ]) or rest parameters (which
+    are shown using the form «...name») are not included in the default
+    argument count.
+    Unless otherwise specified, the length property of a built-in function
+    object has the attributes { [[Writable]]: false, [[Enumerable]]: false,
+    [[Configurable]]: true }.
+
+includes: [propertyHelper.js]
+---*/
+
+assert.sameValue(Intl.DateTimeFormat.prototype.resolvedOptions.length, 0);
+
+verifyNotEnumerable(Intl.DateTimeFormat.prototype.resolvedOptions, "length");
+verifyNotWritable(Intl.DateTimeFormat.prototype.resolvedOptions, "length");
+verifyConfigurable(Intl.DateTimeFormat.prototype.resolvedOptions, "length");
diff --git a/test/intl402/DateTimeFormat/supportedLocalesOf/12.2.2_L15.js b/test/intl402/DateTimeFormat/supportedLocalesOf/12.2.2_L15.js
index 1451ba70a0..af65b4960f 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, [], 1);
+testBuiltInObject(Intl.DateTimeFormat.supportedLocalesOf, true, false, []);
diff --git a/test/intl402/DateTimeFormat/supportedLocalesOf/length.js b/test/intl402/DateTimeFormat/supportedLocalesOf/length.js
new file mode 100644
index 0000000000..0f29d6a0a9
--- /dev/null
+++ b/test/intl402/DateTimeFormat/supportedLocalesOf/length.js
@@ -0,0 +1,31 @@
+// 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: >
+  Intl.DateTimeFormat.supportedLocalesOf.length is 1.
+info: |
+  Intl.DateTimeFormat.supportedLocalesOf ( locales [ , options ] )
+
+  17 ECMAScript Standard Built-in Objects:
+
+    Every built-in function object, including constructors, has a length
+    property whose value is an integer. Unless otherwise specified, this
+    value is equal to the largest number of named arguments shown in the
+    subclause headings for the function description. Optional parameters
+    (which are indicated with brackets: [ ]) or rest parameters (which
+    are shown using the form «...name») are not included in the default
+    argument count.
+    Unless otherwise specified, the length property of a built-in function
+    object has the attributes { [[Writable]]: false, [[Enumerable]]: false,
+    [[Configurable]]: true }.
+
+includes: [propertyHelper.js]
+---*/
+
+assert.sameValue(Intl.DateTimeFormat.supportedLocalesOf.length, 1);
+
+verifyNotEnumerable(Intl.DateTimeFormat.supportedLocalesOf, "length");
+verifyNotWritable(Intl.DateTimeFormat.supportedLocalesOf, "length");
+verifyConfigurable(Intl.DateTimeFormat.supportedLocalesOf, "length");
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 5c20c41c45..80b61e535b 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, [], 0);
+testBuiltInObject(Number.prototype.toLocaleString, true, false, []);
diff --git a/test/intl402/Number/prototype/toLocaleString/length.js b/test/intl402/Number/prototype/toLocaleString/length.js
new file mode 100644
index 0000000000..ff1538355a
--- /dev/null
+++ b/test/intl402/Number/prototype/toLocaleString/length.js
@@ -0,0 +1,31 @@
+// Copyright (C) 2017 André Bargull. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+esid: sup-number.prototype.tolocalestring
+description: >
+  Number.prototype.toLocaleString.length is 0.
+info: |
+  Number.prototype.toLocaleString ( [ locales [ , options ] ] )
+
+  17 ECMAScript Standard Built-in Objects:
+
+    Every built-in function object, including constructors, has a length
+    property whose value is an integer. Unless otherwise specified, this
+    value is equal to the largest number of named arguments shown in the
+    subclause headings for the function description. Optional parameters
+    (which are indicated with brackets: [ ]) or rest parameters (which
+    are shown using the form «...name») are not included in the default
+    argument count.
+    Unless otherwise specified, the length property of a built-in function
+    object has the attributes { [[Writable]]: false, [[Enumerable]]: false,
+    [[Configurable]]: true }.
+
+includes: [propertyHelper.js]
+---*/
+
+assert.sameValue(Number.prototype.toLocaleString.length, 0);
+
+verifyNotEnumerable(Number.prototype.toLocaleString, "length");
+verifyNotWritable(Number.prototype.toLocaleString, "length");
+verifyConfigurable(Number.prototype.toLocaleString, "length");
diff --git a/test/intl402/NumberFormat/11.1_L15.js b/test/intl402/NumberFormat/11.1_L15.js
index 4ac63e4edf..a9e8a0c6e2 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"], 0);
+testBuiltInObject(Intl.NumberFormat, true, true, ["supportedLocalesOf"]);
diff --git a/test/intl402/NumberFormat/length.js b/test/intl402/NumberFormat/length.js
new file mode 100644
index 0000000000..e46a596ef1
--- /dev/null
+++ b/test/intl402/NumberFormat/length.js
@@ -0,0 +1,31 @@
+// 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
+description: >
+  Intl.NumberFormat.length is 0.
+info: |
+  Intl.NumberFormat ( [ locales [ , options ] ] )
+
+  17 ECMAScript Standard Built-in Objects:
+
+    Every built-in function object, including constructors, has a length
+    property whose value is an integer. Unless otherwise specified, this
+    value is equal to the largest number of named arguments shown in the
+    subclause headings for the function description. Optional parameters
+    (which are indicated with brackets: [ ]) or rest parameters (which
+    are shown using the form «...name») are not included in the default
+    argument count.
+    Unless otherwise specified, the length property of a built-in function
+    object has the attributes { [[Writable]]: false, [[Enumerable]]: false,
+    [[Configurable]]: true }.
+
+includes: [propertyHelper.js]
+---*/
+
+assert.sameValue(Intl.NumberFormat.length, 0);
+
+verifyNotEnumerable(Intl.NumberFormat, "length");
+verifyNotWritable(Intl.NumberFormat, "length");
+verifyConfigurable(Intl.NumberFormat, "length");
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 cdfcf10528..2f4c34c4d6 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, [], 1);
+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 047046611b..0b42c9fa1f 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, [], 0);
+testBuiltInObject(Object.getOwnPropertyDescriptor(Intl.NumberFormat.prototype, "format").get , true, false, []);
diff --git a/test/intl402/NumberFormat/prototype/format/format-function-length.js b/test/intl402/NumberFormat/prototype/format/format-function-length.js
new file mode 100644
index 0000000000..ed990780ae
--- /dev/null
+++ b/test/intl402/NumberFormat/prototype/format/format-function-length.js
@@ -0,0 +1,28 @@
+// 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: >
+  The length of the bound Number Format function is 1.
+info: |
+  get Intl.NumberFormat.prototype.format
+
+  ...
+  4. If nf.[[BoundFormat]] is undefined, then
+    a. Let F be a new built-in function object as defined in Number Format Functions (11.1.4).
+    b. Let bf be BoundFunctionCreate(F, nf, « »).
+    c. Perform ! DefinePropertyOrThrow(bf, "length", PropertyDescriptor {[[Value]]: 1,
+       [[Writable]]: false, [[Enumerable]]: false, [[Configurable]]: true}).
+    ...
+
+includes: [propertyHelper.js]
+---*/
+
+var formatFn = new Intl.NumberFormat().format;
+
+assert.sameValue(formatFn.length, 1);
+
+verifyNotEnumerable(formatFn, "length");
+verifyNotWritable(formatFn, "length");
+verifyConfigurable(formatFn, "length");
diff --git a/test/intl402/NumberFormat/prototype/format/length.js b/test/intl402/NumberFormat/prototype/format/length.js
new file mode 100644
index 0000000000..79ed5098b7
--- /dev/null
+++ b/test/intl402/NumberFormat/prototype/format/length.js
@@ -0,0 +1,33 @@
+// 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: >
+  get Intl.NumberFormat.prototype.format.length is 0.
+info: |
+  get Intl.NumberFormat.prototype.format
+
+  17 ECMAScript Standard Built-in Objects:
+
+    Every built-in function object, including constructors, has a length
+    property whose value is an integer. Unless otherwise specified, this
+    value is equal to the largest number of named arguments shown in the
+    subclause headings for the function description. Optional parameters
+    (which are indicated with brackets: [ ]) or rest parameters (which
+    are shown using the form «...name») are not included in the default
+    argument count.
+    Unless otherwise specified, the length property of a built-in function
+    object has the attributes { [[Writable]]: false, [[Enumerable]]: false,
+    [[Configurable]]: true }.
+
+includes: [propertyHelper.js]
+---*/
+
+var desc = Object.getOwnPropertyDescriptor(Intl.NumberFormat.prototype, "format");
+
+assert.sameValue(desc.get.length, 0);
+
+verifyNotEnumerable(desc.get, "length");
+verifyNotWritable(desc.get, "length");
+verifyConfigurable(desc.get, "length");
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 9709ab848d..96448a6bf0 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, [], 0);
+testBuiltInObject(Intl.NumberFormat.prototype.resolvedOptions, true, false, []);
diff --git a/test/intl402/NumberFormat/prototype/resolvedOptions/length.js b/test/intl402/NumberFormat/prototype/resolvedOptions/length.js
new file mode 100644
index 0000000000..0e59b8145e
--- /dev/null
+++ b/test/intl402/NumberFormat/prototype/resolvedOptions/length.js
@@ -0,0 +1,31 @@
+// 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: >
+  Intl.NumberFormat.prototype.resolvedOptions.length is 0.
+info: |
+  Intl.NumberFormat.prototype.resolvedOptions ()
+
+  17 ECMAScript Standard Built-in Objects:
+
+    Every built-in function object, including constructors, has a length
+    property whose value is an integer. Unless otherwise specified, this
+    value is equal to the largest number of named arguments shown in the
+    subclause headings for the function description. Optional parameters
+    (which are indicated with brackets: [ ]) or rest parameters (which
+    are shown using the form «...name») are not included in the default
+    argument count.
+    Unless otherwise specified, the length property of a built-in function
+    object has the attributes { [[Writable]]: false, [[Enumerable]]: false,
+    [[Configurable]]: true }.
+
+includes: [propertyHelper.js]
+---*/
+
+assert.sameValue(Intl.NumberFormat.prototype.resolvedOptions.length, 0);
+
+verifyNotEnumerable(Intl.NumberFormat.prototype.resolvedOptions, "length");
+verifyNotWritable(Intl.NumberFormat.prototype.resolvedOptions, "length");
+verifyConfigurable(Intl.NumberFormat.prototype.resolvedOptions, "length");
diff --git a/test/intl402/NumberFormat/supportedLocalesOf/11.2.2_L15.js b/test/intl402/NumberFormat/supportedLocalesOf/11.2.2_L15.js
index e04db78419..f28c247bb0 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, [], 1);
+testBuiltInObject(Intl.NumberFormat.supportedLocalesOf, true, false, []);
diff --git a/test/intl402/NumberFormat/supportedLocalesOf/length.js b/test/intl402/NumberFormat/supportedLocalesOf/length.js
new file mode 100644
index 0000000000..d4da368b0d
--- /dev/null
+++ b/test/intl402/NumberFormat/supportedLocalesOf/length.js
@@ -0,0 +1,31 @@
+// 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: >
+  Intl.NumberFormat.supportedLocalesOf.length is 1.
+info: |
+  Intl.NumberFormat.supportedLocalesOf ( locales [ , options ] )
+
+  17 ECMAScript Standard Built-in Objects:
+
+    Every built-in function object, including constructors, has a length
+    property whose value is an integer. Unless otherwise specified, this
+    value is equal to the largest number of named arguments shown in the
+    subclause headings for the function description. Optional parameters
+    (which are indicated with brackets: [ ]) or rest parameters (which
+    are shown using the form «...name») are not included in the default
+    argument count.
+    Unless otherwise specified, the length property of a built-in function
+    object has the attributes { [[Writable]]: false, [[Enumerable]]: false,
+    [[Configurable]]: true }.
+
+includes: [propertyHelper.js]
+---*/
+
+assert.sameValue(Intl.NumberFormat.supportedLocalesOf.length, 1);
+
+verifyNotEnumerable(Intl.NumberFormat.supportedLocalesOf, "length");
+verifyNotWritable(Intl.NumberFormat.supportedLocalesOf, "length");
+verifyConfigurable(Intl.NumberFormat.supportedLocalesOf, "length");
diff --git a/test/intl402/PluralRules/builtin.js b/test/intl402/PluralRules/builtin.js
index 8a887772d0..320ea42531 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"], 0);
+testBuiltInObject(Intl.PluralRules, true, true, ["supportedLocalesOf"]);
diff --git a/test/intl402/PluralRules/prototype/resolvedOptions/builtins.js b/test/intl402/PluralRules/prototype/resolvedOptions/builtins.js
index 4e192530f0..6686d24257 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, [], 0);
+testBuiltInObject(Intl.PluralRules.prototype.resolvedOptions, true, false, []);
diff --git a/test/intl402/PluralRules/prototype/resolvedOptions/length.js b/test/intl402/PluralRules/prototype/resolvedOptions/length.js
new file mode 100644
index 0000000000..b67eb25869
--- /dev/null
+++ b/test/intl402/PluralRules/prototype/resolvedOptions/length.js
@@ -0,0 +1,31 @@
+// 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: >
+  Intl.PluralRules.prototype.resolvedOptions.length is 0.
+info: |
+  Intl.PluralRules.prototype.resolvedOptions ()
+
+  17 ECMAScript Standard Built-in Objects:
+
+    Every built-in function object, including constructors, has a length
+    property whose value is an integer. Unless otherwise specified, this
+    value is equal to the largest number of named arguments shown in the
+    subclause headings for the function description. Optional parameters
+    (which are indicated with brackets: [ ]) or rest parameters (which
+    are shown using the form «...name») are not included in the default
+    argument count.
+    Unless otherwise specified, the length property of a built-in function
+    object has the attributes { [[Writable]]: false, [[Enumerable]]: false,
+    [[Configurable]]: true }.
+
+includes: [propertyHelper.js]
+---*/
+
+assert.sameValue(Intl.PluralRules.prototype.resolvedOptions.length, 0);
+
+verifyNotEnumerable(Intl.PluralRules.prototype.resolvedOptions, "length");
+verifyNotWritable(Intl.PluralRules.prototype.resolvedOptions, "length");
+verifyConfigurable(Intl.PluralRules.prototype.resolvedOptions, "length");
diff --git a/test/intl402/PluralRules/prototype/select/length.js b/test/intl402/PluralRules/prototype/select/length.js
new file mode 100644
index 0000000000..004b701b90
--- /dev/null
+++ b/test/intl402/PluralRules/prototype/select/length.js
@@ -0,0 +1,31 @@
+// 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: >
+  Intl.PluralRules.prototype.select is 1.
+info: |
+  Intl.PluralRules.prototype.select( value )
+
+  17 ECMAScript Standard Built-in Objects:
+
+    Every built-in function object, including constructors, has a length
+    property whose value is an integer. Unless otherwise specified, this
+    value is equal to the largest number of named arguments shown in the
+    subclause headings for the function description. Optional parameters
+    (which are indicated with brackets: [ ]) or rest parameters (which
+    are shown using the form «...name») are not included in the default
+    argument count.
+    Unless otherwise specified, the length property of a built-in function
+    object has the attributes { [[Writable]]: false, [[Enumerable]]: false,
+    [[Configurable]]: true }.
+
+includes: [propertyHelper.js]
+---*/
+
+assert.sameValue(Intl.PluralRules.prototype.select.length, 1);
+
+verifyNotEnumerable(Intl.PluralRules.prototype.select, "length");
+verifyNotWritable(Intl.PluralRules.prototype.select, "length");
+verifyConfigurable(Intl.PluralRules.prototype.select, "length");
diff --git a/test/intl402/PluralRules/supportedLocalesOf/length.js b/test/intl402/PluralRules/supportedLocalesOf/length.js
new file mode 100644
index 0000000000..0ed98f32d3
--- /dev/null
+++ b/test/intl402/PluralRules/supportedLocalesOf/length.js
@@ -0,0 +1,31 @@
+// 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: >
+  Intl.PluralRules.supportedLocalesOf.length is 1.
+info: |
+  Intl.PluralRules.supportedLocalesOf ( locales [ , options ] )
+
+  17 ECMAScript Standard Built-in Objects:
+
+    Every built-in function object, including constructors, has a length
+    property whose value is an integer. Unless otherwise specified, this
+    value is equal to the largest number of named arguments shown in the
+    subclause headings for the function description. Optional parameters
+    (which are indicated with brackets: [ ]) or rest parameters (which
+    are shown using the form «...name») are not included in the default
+    argument count.
+    Unless otherwise specified, the length property of a built-in function
+    object has the attributes { [[Writable]]: false, [[Enumerable]]: false,
+    [[Configurable]]: true }.
+
+includes: [propertyHelper.js]
+---*/
+
+assert.sameValue(Intl.PluralRules.supportedLocalesOf.length, 1);
+
+verifyNotEnumerable(Intl.PluralRules.supportedLocalesOf, "length");
+verifyNotWritable(Intl.PluralRules.supportedLocalesOf, "length");
+verifyConfigurable(Intl.PluralRules.supportedLocalesOf, "length");
diff --git a/test/intl402/PluralRules/supportedLocalesOf/supportedLocalesOf.js b/test/intl402/PluralRules/supportedLocalesOf/supportedLocalesOf.js
index 10c4ba2a9a..af25e04067 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, [], 1);
+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 552bfb34cd..a3564db9eb 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, [], 1);
+testBuiltInObject(String.prototype.localeCompare, true, false, []);
diff --git a/test/intl402/String/prototype/localeCompare/length.js b/test/intl402/String/prototype/localeCompare/length.js
new file mode 100644
index 0000000000..6ba106dd56
--- /dev/null
+++ b/test/intl402/String/prototype/localeCompare/length.js
@@ -0,0 +1,31 @@
+// Copyright (C) 2017 André Bargull. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+esid: sup-String.prototype.localeCompare
+description: >
+  String.prototype.localeCompare.length is 1.
+info: |
+  String.prototype.localeCompare ( that [ , locales [ , options ] ] )
+
+  17 ECMAScript Standard Built-in Objects:
+
+    Every built-in function object, including constructors, has a length
+    property whose value is an integer. Unless otherwise specified, this
+    value is equal to the largest number of named arguments shown in the
+    subclause headings for the function description. Optional parameters
+    (which are indicated with brackets: [ ]) or rest parameters (which
+    are shown using the form «...name») are not included in the default
+    argument count.
+    Unless otherwise specified, the length property of a built-in function
+    object has the attributes { [[Writable]]: false, [[Enumerable]]: false,
+    [[Configurable]]: true }.
+
+includes: [propertyHelper.js]
+---*/
+
+assert.sameValue(String.prototype.localeCompare.length, 1);
+
+verifyNotEnumerable(String.prototype.localeCompare, "length");
+verifyNotWritable(String.prototype.localeCompare, "length");
+verifyConfigurable(String.prototype.localeCompare, "length");
-- 
GitLab