summaryrefslogtreecommitdiffstats
path: root/js/src/tests/test262/intl402/Intl/supportedValuesOf/currencies.js
diff options
context:
space:
mode:
Diffstat (limited to 'js/src/tests/test262/intl402/Intl/supportedValuesOf/currencies.js')
-rw-r--r--js/src/tests/test262/intl402/Intl/supportedValuesOf/currencies.js50
1 files changed, 50 insertions, 0 deletions
diff --git a/js/src/tests/test262/intl402/Intl/supportedValuesOf/currencies.js b/js/src/tests/test262/intl402/Intl/supportedValuesOf/currencies.js
new file mode 100644
index 0000000000..467ee39ca1
--- /dev/null
+++ b/js/src/tests/test262/intl402/Intl/supportedValuesOf/currencies.js
@@ -0,0 +1,50 @@
+// Copyright (C) 2021 André Bargull. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+esid: sec-intl.supportedvaluesof
+description: >
+ The returned "currency" values are sorted, unique, and upper-case canonicalised.
+info: |
+ Intl.supportedValuesOf ( key )
+
+ 1. Let key be ? ToString(key).
+ ...
+ 4. Else if key is "currency", then
+ a. Let list be ! AvailableCurrencies( ).
+ ...
+ 9. Return ! CreateArrayFromList( list ).
+
+ AvailableCurrencies ( )
+ The AvailableCurrencies abstract operation returns a List, ordered as if an
+ Array of the same values had been sorted using %Array.prototype.sort% using
+ undefined as comparefn, that contains unique, well-formed, and upper case
+ canonicalized 3-letter ISO 4217 currency codes, identifying the currencies
+ for which the implementation provides the functionality of Intl.DisplayNames
+ and Intl.NumberFormat objects.
+includes: [compareArray.js]
+features: [Intl-enumeration]
+---*/
+
+const currencies = Intl.supportedValuesOf("currency");
+
+assert(Array.isArray(currencies), "Returns an Array object.");
+assert.sameValue(Object.getPrototypeOf(currencies), Array.prototype,
+ "The array prototype is Array.prototype");
+
+const otherCurrencies = Intl.supportedValuesOf("currency");
+assert.notSameValue(otherCurrencies, currencies,
+ "Returns a new array object for each call.");
+
+assert.compareArray(currencies, otherCurrencies.sort(),
+ "The array is sorted.");
+
+assert.sameValue(new Set(currencies).size, currencies.length,
+ "The array doesn't contain duplicates.");
+
+const codeRE = /^[A-Z]{3}$/;
+for (let currency of currencies) {
+ assert(codeRE.test(currency), `${currency} is a 3-letter ISO 4217 currency code`);
+}
+
+reportCompare(0, 0);