// 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`); }