summaryrefslogtreecommitdiffstats
path: root/js/src/tests/non262/Intl/DateTimeFormat/formatRange-timeZoneName.js
diff options
context:
space:
mode:
Diffstat (limited to 'js/src/tests/non262/Intl/DateTimeFormat/formatRange-timeZoneName.js')
-rw-r--r--js/src/tests/non262/Intl/DateTimeFormat/formatRange-timeZoneName.js124
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");