// |reftest| shell-option(--enable-intl-locale-info) skip-if(!this.hasOwnProperty('Intl')||!this.Intl.Locale.prototype.hasOwnProperty('getHourCycles')) // Hour cycle information from CLDR, search for the element in // . function hourCycles(tag) { return new Intl.Locale(tag).getHourCycles(); } // Unknown language, script, and region should all give the same results. assertEqArray(hourCycles("und"), ["h12", "h23"]); assertEqArray(hourCycles("und-ZZ"), ["h23"]); assertEqArray(hourCycles("und-Zzzz"), ["h12", "h23"]); assertEqArray(hourCycles("und-Zzzz-ZZ"), ["h23"]); // Simple tests using "en". assertEqArray(hourCycles("en"), ["h12", "h23"]); assertEqArray(hourCycles("en-US"), ["h12", "h23"]); assertEqArray(hourCycles("en-ZZ"), ["h23"]); assertEqArray(hourCycles("en-GB"), ["h23", "h12"]); // Simple tests using "de". assertEqArray(hourCycles("de"), ["h23", "h12"]); assertEqArray(hourCycles("de-DE"), ["h23", "h12"]); assertEqArray(hourCycles("de-ZZ"), ["h23"]); // Locales without multiple additional allowed hour cycles. assertEqArray(hourCycles("und-DK"), ["h23"]); assertEqArray(hourCycles("da-DK"), ["h23"]); // Locales with more than two additional allowed hour cycles. assertEqArray(hourCycles("und-JP"), ["h23", "h11", "h12"]); assertEqArray(hourCycles("ja-JP"), ["h23", "h11", "h12"]); // Locales where preferred hour cycle doesn't match first allowed hour cycle. assertEqArray(hourCycles("und-IR"), ["h23", "h12"]); assertEqArray(hourCycles("fa-IR"), ["h23", "h12"]); // Locales where language changes the preferred hour cycle. assertEqArray(hourCycles("und-CA"), ["h12", "h23"]); assertEqArray(hourCycles("en-CA"), ["h12", "h23"]); assertEqArray(hourCycles("fr-CA"), ["h23", "h12"]); // Region "001" has language overrides, too. assertEqArray(hourCycles("und-001"), ["h23", "h12"]); assertEqArray(hourCycles("en-001"), ["h12", "h23"]); assertEqArray(hourCycles("ar-001"), ["h12", "h23"]); const regions = [ "001", // UN M.49 code for the World. // List of all regular regions in CLDR 48. // // Regions with status "regular" in . ...validityData(` AC~G AI AL~M AO AQ~U AW~X AZ BA~B BD~J BL~O BQ~T BV~W BY~Z CA CC~D CF~I CK~R CU~Z DE DG DJ~K DM DO DZ EA EC EE EG~H ER~T FI~K FM FO FR GA~B GD~I GL~N GP~U GW GY HK HM~N HR HT~U IC~E IL~O IQ~T JE JM JO~P KE KG~I KM~N KP KR KW KY~Z LA~C LI LK LR~V LY MA MC~H MK~Z NA NC NE~G NI NL NO~P NR NU NZ OM PA PE~H PK~N PR~T PW PY QA RE RO RS RU RW SA~E SG~O SR~T SV SX~Z TA TC~D TF~H TJ~O TR TT TV~W TZ UA UG UM US UY~Z VA VC VE VG VI VN VU WF WS XK YE YT ZA ZM ZW `), "ZZ", // Identifier for the unknown region. ]; // Smoke test using some regions. for (let region of regions) { assertEq(hourCycles(`und-${region}`).length > 0, true); } if (typeof reportCompare === "function") reportCompare(0, 0);