quarter.js (2472B)
1 // |reftest| skip-if(!this.hasOwnProperty('Intl')||!this.hasOwnProperty('addIntlExtras')) 2 3 addMozIntlDisplayNames(this); 4 5 const tests = { 6 "en": { 7 long: ["1st quarter", "2nd quarter", "3rd quarter", "4th quarter"], 8 short: ["Q1", "Q2", "Q3", "Q4"], 9 narrow: ["1", "2", "3", "4"], 10 }, 11 "de": { 12 long: ["1. Quartal", "2. Quartal", "3. Quartal", "4. Quartal"], 13 short: ["Q1", "Q2", "Q3", "Q4"], 14 narrow: ["1", "2", "3", "4"], 15 }, 16 "fr": { 17 long: ["1er trimestre", "2e trimestre", "3e trimestre", "4e trimestre"], 18 short: ["T1", "T2", "T3", "T4"], 19 narrow: ["1", "2", "3", "4"], 20 }, 21 "zh": { 22 long: ["第一季度", "第二季度", "第三季度", "第四季度"], 23 short: ["1季度", "2季度", "3季度", "4季度"], 24 narrow: ["1", "2", "3", "4"], 25 }, 26 }; 27 28 for (let [locale, localeTests] of Object.entries(tests)) { 29 let defaultCalendar = new Intl.DateTimeFormat(locale).resolvedOptions().calendar; 30 31 for (let [style, styleTests] of Object.entries(localeTests)) { 32 let dn = new Intl.DisplayNames(locale, {type: "quarter", style}); 33 34 let resolved = dn.resolvedOptions(); 35 assertEq(resolved.locale, locale); 36 assertEq(resolved.calendar, defaultCalendar); 37 assertEq(resolved.style, style); 38 assertEq(resolved.type, "quarter"); 39 assertEq(resolved.fallback, "code"); 40 41 for (let i = 0; i < 4; i++) { 42 assertEq(dn.of(i + 1), styleTests[i]); 43 44 // Also works with strings. 45 assertEq(dn.of(String(i + 1)), styleTests[i]); 46 47 // Also works with objects. 48 assertEq(dn.of(Object(i + 1)), styleTests[i]); 49 } 50 } 51 } 52 53 { 54 let dn = new Intl.DisplayNames("en", {type: "quarter"}); 55 56 // Performs ToString on the input and then validates the stringified result. 57 assertThrowsInstanceOf(() => dn.of(), RangeError); 58 assertThrowsInstanceOf(() => dn.of(null), RangeError); 59 assertThrowsInstanceOf(() => dn.of(Symbol()), TypeError); 60 61 // Throws an error if |code| isn't an integer. 62 assertThrowsInstanceOf(() => dn.of(1.5), RangeError); 63 assertThrowsInstanceOf(() => dn.of(-Infinity), RangeError); 64 assertThrowsInstanceOf(() => dn.of(Infinity), RangeError); 65 assertThrowsInstanceOf(() => dn.of(NaN), RangeError); 66 67 // Throws an error if outside of [1, 4]. 68 assertThrowsInstanceOf(() => dn.of(-1), RangeError); 69 assertThrowsInstanceOf(() => dn.of(0), RangeError); 70 assertThrowsInstanceOf(() => dn.of(5), RangeError); 71 } 72 73 if (typeof reportCompare === "function") 74 reportCompare(true, true);