diff options
Diffstat (limited to 'js/src/tests/non262/Intl/DateTimeFormat/formatRange-timeZoneName.js')
-rw-r--r-- | js/src/tests/non262/Intl/DateTimeFormat/formatRange-timeZoneName.js | 124 |
1 files changed, 124 insertions, 0 deletions
diff --git a/js/src/tests/non262/Intl/DateTimeFormat/formatRange-timeZoneName.js b/js/src/tests/non262/Intl/DateTimeFormat/formatRange-timeZoneName.js new file mode 100644 index 0000000000..c99799d487 --- /dev/null +++ b/js/src/tests/non262/Intl/DateTimeFormat/formatRange-timeZoneName.js @@ -0,0 +1,124 @@ +// |reftest| skip-if(!this.hasOwnProperty("Intl")) + +// Test all "timeZoneName" options with various locales when formatting a +// date-time range. + +const { + Hour, Minute, Literal, TimeZoneName, +} = DateTimeFormatParts; + +function hours(v) { + return v * 60 * 60 * 1000; +} + +function minutes(v) { + return v * 60 * 1000; +} + +const tests = { + "en": [ + { + start: 0, + end: minutes(2), + timeZone: "UTC", + options: {hour: "numeric", minute: "numeric", hour12: false}, + timeZoneNames: { + short: [Hour("00"), Literal(":"), Minute("00"), Literal(" – "), Hour("00"), Literal(":"), Minute("02"), Literal(" "), TimeZoneName("UTC")], + shortOffset: [Hour("00"), Literal(":"), Minute("00"), Literal(" – "), Hour("00"), Literal(":"), Minute("02"), Literal(" "), TimeZoneName("GMT")], + shortGeneric: "shortOffset", + long: [Hour("00"), Literal(":"), Minute("00"), Literal(" – "), Hour("00"), Literal(":"), Minute("02"), Literal(" "), TimeZoneName("Coordinated Universal Time")], + longOffset: "shortOffset", + longGeneric: "shortOffset", + }, + }, + { + start: 0, + end: minutes(2), + timeZone: "America/New_York", + options: {hour: "numeric", minute: "numeric", hour12: false}, + timeZoneNames: { + short: [Hour("19"), Literal(":"), Minute("00"), Literal(" – "), Hour("19"), Literal(":"), Minute("02"), Literal(" "), TimeZoneName("EST")], + shortOffset: [Hour("19"), Literal(":"), Minute("00"), Literal(" – "), Hour("19"), Literal(":"), Minute("02"), Literal(" "), TimeZoneName("GMT-5")], + shortGeneric: [Hour("19"), Literal(":"), Minute("00"), Literal(" – "), Hour("19"), Literal(":"), Minute("02"), Literal(" "), TimeZoneName("ET")], + long: [Hour("19"), Literal(":"), Minute("00"), Literal(" – "), Hour("19"), Literal(":"), Minute("02"), Literal(" "), TimeZoneName("Eastern Standard Time")], + longOffset: [Hour("19"), Literal(":"), Minute("00"), Literal(" – "), Hour("19"), Literal(":"), Minute("02"), Literal(" "), TimeZoneName("GMT-05:00")], + longGeneric: [Hour("19"), Literal(":"), Minute("00"), Literal(" – "), Hour("19"), Literal(":"), Minute("02"), Literal(" "), TimeZoneName("Eastern Time")], + }, + }, + ], + "fr": [ + { + start: 0, + end: hours(2), + timeZone: "UTC", + options: {hour: "numeric", hour12: false}, + timeZoneNames: { + short: [Hour("00"), Literal(" – "), Hour("02"), Literal(" "), TimeZoneName("UTC")], + shortOffset: "short", + shortGeneric: "short", + long: [Hour("00"), Literal(" – "), Hour("02"), Literal(" "), TimeZoneName("temps universel coordonné")], + longOffset: "short", + longGeneric: "short", + }, + }, + { + start: minutes(15), + end: hours(5) + minutes(30), + timeZone: "Europe/Paris", + options: {hour: "numeric", minute: "numeric", hour12: false}, + timeZoneNames: { + short: [Hour("01"), Literal(":"), Minute("15"), Literal(" – "), Hour("06"), Literal(":"), Minute("30"), Literal(" "), TimeZoneName("UTC+1")], + shortOffset: "short", + shortGeneric: [Hour("01"), Literal(":"), Minute("15"), Literal(" – "), Hour("06"), Literal(":"), Minute("30"), Literal(" "), TimeZoneName("heure : France")], + long: [Hour("01"), Literal(":"), Minute("15"), Literal(" – "), Hour("06"), Literal(":"), Minute("30"), Literal(" "), TimeZoneName("heure normale d’Europe centrale")], + longOffset: [Hour("01"), Literal(":"), Minute("15"), Literal(" – "), Hour("06"), Literal(":"), Minute("30"), Literal(" "), TimeZoneName("UTC+01:00")], + longGeneric: "long", + }, + }, + ], + "de": [ + { + start: 0, + end: hours(2), + timeZone: "UTC", + options: {hour: "numeric", hour12: false}, + timeZoneNames: { + short: [Hour("00"), Literal("–"), Hour("02"), Literal(" Uhr "), TimeZoneName("UTC")], + shortOffset: [Hour("00"), Literal("–"), Hour("02"), Literal(" Uhr "), TimeZoneName("GMT")], + shortGeneric: "shortOffset", + long: [Hour("00"), Literal("–"), Hour("02"), Literal(" Uhr "), TimeZoneName("Koordinierte Weltzeit")], + longOffset: "shortOffset", + longGeneric: "shortOffset", + }, + }, + { + start: hours(5) + minutes(15), + end: hours(5) + minutes(30), + timeZone: "Europe/Berlin", + options: {hour: "numeric", minute: "numeric", hour12: false}, + timeZoneNames: { + short: [Hour("06"), Literal(":"), Minute("15"), Literal("–"), Hour("06"), Literal(":"), Minute("30"), Literal(" Uhr "), TimeZoneName("MEZ")], + shortOffset: [Hour("06"), Literal(":"), Minute("15"), Literal("–"), Hour("06"), Literal(":"), Minute("30"), Literal(" Uhr "), TimeZoneName("GMT+1")], + shortGeneric: "short", + long: [Hour("06"), Literal(":"), Minute("15"), Literal("–"), Hour("06"), Literal(":"), Minute("30"), Literal(" Uhr "), TimeZoneName("Mitteleuropäische Normalzeit")], + longOffset: [Hour("06"), Literal(":"), Minute("15"), Literal("–"), Hour("06"), Literal(":"), Minute("30"), Literal(" Uhr "), TimeZoneName("GMT+01:00")], + longGeneric: "long", + }, + }, + ], +}; + +for (let [locale, formats] of Object.entries(tests)) { + for (let {start, end, timeZone, options, timeZoneNames} of formats) { + for (let [timeZoneName, format] of Object.entries(timeZoneNames)) { + let df = new Intl.DateTimeFormat(locale, {timeZone, timeZoneName, ...options}); + if (typeof format === "string") { + format = timeZoneNames[format]; + } + assertRangeParts(df, start, end, format); + } + } +} + +if (typeof reportCompare === "function") + reportCompare(0, 0, "ok"); |