// Copyright 2017 the V8 project authors. All rights reserved. // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. // Make sure that invalid locales throw RangeError var invalid_locales = ["arcdefghl-Latn", "fil-Latn-kxx", "fr-Latn-CAK", "en-Latin-US", "en-a-foo-9charlong", "en-a-b", ]; for (let locale of invalid_locales) { assertThrows("var nf = new Intl.NumberFormat('" + locale + "')", RangeError); } var not_so_long_locales = [ "bs-u-nu-bzcu-cab-cabs-avnlubs-avnihu-zcu-cab-cbs-avnllubs-avnihq-zcu-cab-cbs-ubs-avnihu-cabs-flus-xxd-vnluy", "bs-u-nu-bzcu-cab-cabs-avnlubs-avnihu-zcu-cab-cbs-avnllubs-avnihq-zcu-cab-cbs-ubs-avnihu-cabs-flus-xxd", "bs-u-nu-bzcu-cab-cabs-avnlubs-avnihu-zcu", ]; for (let locale of not_so_long_locales) { assertEquals((new Intl.NumberFormat(locale)).resolvedOptions().numberingSystem, "latn"); } // The point of this test is to make sure that there's no ill-effect with too // long a locale name. Because, thhere's no provision in the Ecma 402 on the // length limit of a locale ID and BCP 47 (RFC 5646 section 2.1). So, it's // a spec violation to treat this as invalid. See TODO(jshin) comment // in Runtime_CanonicalizeLanguageTag in runtime-intl.cc . var overlong_locales = [ "he-up-a-caiaup-araup-ai-pdu-sp-bs-up-arscna-zeieiaup-araup-arscia-rews-us-up-arscna-zeieiaup-araup-arsciap-arscna-zeieiaup-araup-arscie-u-sp-bs-uaup-arscia", "he-up-a-caiaup-araup-ai-pdu-sp-bs-up-arscna-zeieiaup-araup-arscia-rews-us-up-arscna-zeieiaup-araup-arsciap-arscna-zeieiaup-araup-arscie-u-sp-bs-uaup-arscia-xyza", "bs-u-nu-bzcu-cab-cabs-avnlubs-avnihu-zcu-cab-cbs-avnllubs-avnihq-zcu-cab-cbs-ubs-avnihu-cabs-flus-xxd-vnluy-abcd", ]; for (let locale of overlong_locales) { assertThrows("var nf = new Intl.NumberFormat('" + locale + "')", RangeError) }