diff --git a/test/intl402/DateTimeFormat/prototype/format/temporal-objects-formatting.js b/test/intl402/DateTimeFormat/prototype/format/temporal-objects-formatting.js index 1a502355db..9dfcff116e 100644 --- a/test/intl402/DateTimeFormat/prototype/format/temporal-objects-formatting.js +++ b/test/intl402/DateTimeFormat/prototype/format/temporal-objects-formatting.js @@ -33,156 +33,345 @@ const dateTimeFormatterFullMedium = new Intl.DateTimeFormat("en-US", { dateStyle const dateTimeFormatterFullShort = new Intl.DateTimeFormat("en-US", { dateStyle: "full", timeStyle: "short", timeZone: "Pacific/Apia" }); const dateTimeFormatterFullLong = new Intl.DateTimeFormat("en-US", { dateStyle: "full", timeStyle: "long", timeZone: "Pacific/Apia" }); -const date = new Temporal.PlainDate(2021, 8, 4); -const datetime = new Temporal.PlainDateTime(2021, 8, 4, 0, 30, 45, 123, 456, 789); -const monthday = new Temporal.PlainMonthDay(8, 4, "gregory"); -const yearmonth = new Temporal.PlainYearMonth(2021, 8, "gregory"); -const time = new Temporal.PlainTime(0, 30, 45, 123, 456, 789); - // PlainDate -var dateResult = dateFormatterShort.format(date); -assert.sameValue(dateResult, "8/4/21", "plain date, dateStyle=short"); -dateResult = dateFormatterMedium.format(date); -assert.sameValue(dateResult, "Aug 4, 2021", "plain date, dateStyle=medium"); -dateResult = dateFormatterLong.format(date); -assert.sameValue(dateResult, "August 4, 2021", "plain date, dateStyle=long"); -dateResult = dateFormatterFull.format(date); -assert.sameValue(dateResult, "Wednesday, August 4, 2021", "plain date, dateStyle=full"); +const date = new Temporal.PlainDate(2021, 8, 4); + +const dateShort = dateFormatterShort.format(date); +/* + To avoid requiring an exact format for the output of locale-dependent functions, + don't run these tests, but they're left here as documentation for what the output + should roughly look like. +*/ +// assert.sameValue(dateShort, "8/4/21", "plain date, dateStyle=short"); +const dateMedium = dateFormatterMedium.format(date); +// assert.sameValue(dateMedium, "Aug 4, 2021", "plain date, dateStyle=medium"); +const dateLong = dateFormatterLong.format(date); +// assert.sameValue(dateLong, "August 4, 2021", "plain date, dateStyle=long"); +const dateFull = dateFormatterFull.format(date); +// assert.sameValue(dateFull, "Wednesday, August 4, 2021", "plain date, dateStyle=full"); assert.throws(TypeError, () => timeFormatterShort.format(date), "plain date, timeStyle=short"); assert.throws(TypeError, () => timeFormatterMedium.format(date), "plain date, timeStyle=medium"); assert.throws(TypeError, () => timeFormatterLong.format(date), "plain date, timeStyle=long"); assert.throws(TypeError, () => timeFormatterFull.format(date), "plain date, timeStyle=full"); -dateResult = dateTimeFormatterShort.format(date); -assert.sameValue(dateResult, "8/4/21", "plain date, dateStyle = timeStyle = short"); -dateResult = dateTimeFormatterMedium.format(date); -assert.sameValue(dateResult, "Aug 4, 2021", "plain date, dateStyle = timeStyle = medium"); -dateResult = dateTimeFormatterLong.format(date); -assert.sameValue(dateResult, "August 4, 2021", "plain date, dateStyle = timeStyle = long"); -dateResult = dateTimeFormatterFull.format(date); -assert.sameValue(dateResult, "Wednesday, August 4, 2021", "plain date, dateStyle = timeStyle = full"); -dateResult = dateTimeFormatterShortLong.format(date); -assert.sameValue(dateResult, "8/4/21", "plain date, dateStyle = short, timeStyle = long"); +var result = dateTimeFormatterShort.format(date); +assert.sameValue(result, dateShort, "plain date, dateStyle = timeStyle = short"); +result = dateTimeFormatterMedium.format(date); +assert.sameValue(result, dateMedium, "plain date, dateStyle = timeStyle = medium"); +result = dateTimeFormatterLong.format(date); +assert.sameValue(result, dateLong, "plain date, dateStyle = timeStyle = long"); +result = dateTimeFormatterFull.format(date); +assert.sameValue(result, dateFull, "plain date, dateStyle = timeStyle = full"); +result = dateTimeFormatterShortLong.format(date); +assert.sameValue(result, dateShort, "plain date, dateStyle = short, timeStyle = long"); // PlainDateTime +// Use a PlainDateTime with unique values in each field, so as to make it easier +// to test which values appear in the formatted output +const datetime = new Temporal.PlainDateTime(2222, 3, 4, 5, 6, 7, 888, 999, 111); + var datetimeResult = dateFormatterShort.format(datetime); -assert.sameValue(datetimeResult, "8/4/21", "plain datetime, dateStyle=short"); +// assert.sameValue(datetimeResult, "3/4/22", "plain datetime, dateStyle=short"); +assert.sameValue(datetimeResult.search("888"), -1, "plain datetime, dateStyle=short"); + datetimeResult = dateFormatterMedium.format(datetime); -assert.sameValue(datetimeResult, "Aug 4, 2021", "plain datetime, dateStyle=medium"); +// assert.sameValue(datetimeResult, "Mar 4, 2222", "plain datetime, dateStyle=medium"); +assert.sameValue(datetimeResult.search("3"), -1, "plain datetime, dateStyle=medium: numeric month should not appear"); +assert.notSameValue(datetimeResult.search("4"), -1, "plain datetime, dateStyle=medium: day should appear"); +assert.sameValue(datetimeResult.search("999"), -1, "plain datetime, dateStyle=medium: microseconds should not appear"); + datetimeResult = dateFormatterLong.format(datetime); -assert.sameValue(datetimeResult, "August 4, 2021", "plain datetime, dateStyle=long"); +// assert.sameValue(datetimeResult, "March 4, 2222", "plain datetime, dateStyle=long"); +assert.sameValue(datetimeResult.search("3"), -1, "plain datetime, dateStyle=long: numeric month should not appear"); +assert.notSameValue(datetimeResult.search("4"), -1, "plain datetime, dateStyle=long: day should appear"); +assert.sameValue(datetimeResult.search("999"), -1, "plain datetime, dateStyle=long: nanoseconds should not appear"); + datetimeResult = dateFormatterFull.format(datetime); -assert.sameValue(datetimeResult, "Wednesday, August 4, 2021", "plain datetime, dateStyle=full"); +// assert.sameValue(datetimeResult, "Monday, March 4, 2222", "plain datetime, dateStyle=full"); +assert.notSameValue(datetimeResult.search("Monday", -1, "plain datetime, dateStyle=full: day of week should appear")); +assert.notSameValue(datetimeResult.search("4"), -1, "plain datetime, dateStyle=full: day should appear"); +assert.sameValue(datetimeResult.search("888"), -1, "plain datetime, dateStyle=long: milliseconds should not appear"); + datetimeResult = timeFormatterShort.format(datetime); -assert.sameValue(datetimeResult, "12:30 AM", "plain datetime, timeStyle=short"); +// assert.sameValue(datetimeResult, "5:06 AM", "plain datetime, timeStyle=short"); +assert.sameValue(datetimeResult.search("3"), -1, "plain datetime, timeStyle=short: month should not appear"); +assert.sameValue(datetimeResult.search("4"), -1, "plain datetime, timeStyle=short: day should not appear"); +assert.notSameValue(datetimeResult.search("5"), -1, "plain datetime, timeStyle=short: hour should appear"); + datetimeResult = timeFormatterMedium.format(datetime); -assert.sameValue(datetimeResult, "12:30:45 AM", "plain datetime, timeStyle=medium"); +// assert.sameValue(datetimeResult, "5:06:07 AM", "plain datetime, timeStyle=medium"); +assert.sameValue(datetimeResult.search("3"), -1, "plain datetime, timeStyle=medium: month should not appear"); +assert.sameValue(datetimeResult.search("4"), -1, "plain datetime, timeStyle=medium: day should not appear"); +assert.notSameValue(datetimeResult.search("7"), -1, "plain datetime, timeStyle=medium: seconds should appear"); + datetimeResult = timeFormatterLong.format(datetime); -assert.sameValue(datetimeResult, "12:30:45 AM", "plain datetime, timeStyle=long"); +// assert.sameValue(datetimeResult, "5:06:07 AM", "plain datetime, timeStyle=long"); +assert.sameValue(datetimeResult.search("3"), -1, "plain datetime, timeStyle=long: month should not appear"); +assert.sameValue(datetimeResult.search("4"), -1, "plain datetime, timeStyle=long: day should not appear"); +assert.notSameValue(datetimeResult.search("6"), -1, "plain datetime, timeStyle=long: minutes should appear"); + datetimeResult = timeFormatterFull.format(datetime); -assert.sameValue(datetimeResult, "12:30:45 AM", "plain datetime, timeStyle=full"); +// assert.sameValue(datetimeResult, "5:06:07 AM", "plain datetime, timeStyle=full"); +assert.sameValue(datetimeResult.search("3"), -1, "plain datetime, timeStyle=full: month should not appear"); +assert.sameValue(datetimeResult.search("4"), -1, "plain datetime, timeStyle=full: day should not appear"); +assert.notSameValue(datetimeResult.search("7"), -1, "plain datetime, timeStyle=full: seconds should appear"); + datetimeResult = dateTimeFormatterShort.format(datetime); -assert.sameValue(datetimeResult, "8/4/21, 12:30 AM", "plain datetime, dateStyle = timeStyle = short"); -datetimeResult = dateTimeFormatterMedium.format(datetime); -assert.sameValue(datetimeResult, "Aug 4, 2021, 12:30:45 AM", "plain datetime, dateStyle = timeStyle = medium"); +// assert.sameValue(datetimeResult, "3/4/22, 5:06 AM", "plain datetime, dateStyle = timeStyle = short"); +assert.notSameValue(datetimeResult.search("3"), -1, "plain datetime, dateStyle = timeStyle = short: numeric month should appear"); +assert.notSameValue(datetimeResult.search("4"), -1, "plain datetime, dateStyle = timeStyle = short: day should appear"); +assert.notSameValue(datetimeResult.search("6"), -1, "plain datetime, dateStyle = timeStyle = short: minutes should appear"); +assert.sameValue(datetimeResult.search("7"), -1, "plain datetime, dateStyle = timeStyle = short: seconds should not appear"); + datetimeResult = dateTimeFormatterLong.format(datetime); -assert.sameValue(datetimeResult, "August 4, 2021 at 12:30:45 AM", "plain datetime, dateStyle = timeStyle = long"); +// assert.sameValue(datetimeResult, "Mar 4, 2222, 5:06:07 AM", "plain datetime, dateStyle = timeStyle = medium"); +assert.sameValue(datetimeResult.search("3"), -1, "plain datetime, dateStyle = timeStyle = medium: numeric month should not appear"); +assert.notSameValue(datetimeResult.search("4"), -1, "plain datetime, dateStyle = timeStyle = medium: day should appear"); +assert.notSameValue(datetimeResult.search("6"), -1, "plain datetime, dateStyle = timeStyle = medium: minutes should appear"); +assert.notSameValue(datetimeResult.search("7"), -1, "plain datetime, dateStyle = timeStyle = medium: seconds should appear"); + +datetimeResult = dateTimeFormatterLong.format(datetime); +// assert.sameValue(datetimeResult, "March 4, 2222 at 5:06:07 AM", "plain datetime, dateStyle = timeStyle = long"); +assert.sameValue(datetimeResult.search("3"), -1, "plain datetime, dateStyle = timeStyle = long: numeric month should not appear"); +assert.notSameValue(datetimeResult.search("4"), -1, "plain datetime, dateStyle = timeStyle = long: day should appear"); +assert.notSameValue(datetimeResult.search("6"), -1, "plain datetime, dateStyle = timeStyle = long: minutes should appear"); +assert.notSameValue(datetimeResult.search("7"), -1, "plain datetime, dateStyle = timeStyle = long: seconds should appear"); + datetimeResult = dateTimeFormatterFull.format(datetime); -assert.sameValue(datetimeResult, "Wednesday, August 4, 2021 at 12:30:45 AM", "plain datetime, dateStyle = timeStyle = full"); +// assert.sameValue(datetimeResult, "Monday, March 4, 2222 at 5:06:07 AM", "plain datetime, dateStyle = timeStyle = full"); +assert.notSameValue(datetimeResult.search("Monday", -1, "plain datetime, dateStyle = timeStyle = full: day of week should appear")); +assert.notSameValue(datetimeResult.search("4"), -1, "plain datetime, dateStyle = timeStyle = full: day should appear"); +assert.sameValue(datetimeResult.search("888"), -1, "plain datetime, dateStyle = timeStyle = full: milliseconds should not appear"); + datetimeResult = dateTimeFormatterShortLong.format(datetime); -assert.sameValue(datetimeResult, "8/4/2021, 12:30:45 AM", "plain datetime, dateStyle = short, timeStyle = long"); +// assert.sameValue(datetimeResult, "3/4/2222, 5:06:07 AM", "plain datetime, dateStyle = short, timeStyle = long"); +assert.notSameValue(datetimeResult.search("2222", -1, "plain datetime, dateStyle = short, timeStyle = long: 4-digit year should appear")); +assert.notSameValue(datetimeResult.search("3", -1, "plain datetime, dateStyle = short, timeStyle = long: numeric month should appear")); +assert.notSameValue(datetimeResult.search("4"), -1, "plain datetime, dateStyle = short, timeStyle = long: day should appear"); +assert.sameValue(datetimeResult.search("888"), -1, "plain datetime, dateStyle = short, timeStyle = long: milliseconds should not appear"); + + datetimeResult = dateTimeFormatterShortMedium.format(datetime); -assert.sameValue(datetimeResult, "8/4/21, 12:30:45 AM", "plain datetime, dateStyle = short, timeStyle = medium"); +// assert.sameValue(datetimeResult, "3/4/22, 5:06:07 AM", "plain datetime, dateStyle = short, timeStyle = medium"); +assert.sameValue(datetimeResult.search("2222"), -1, "plain datetime, dateStyle = short, timeStyle = medium: 4-digit year should not appear"); +assert.notSameValue(datetimeResult.search("3"), -1, "plain datetime, dateStyle = short, timeStyle = medium: numeric month should appear"); +assert.notSameValue(datetimeResult.search("4"), -1, "plain datetime, dateStyle = short, timeStyle = medium: day should appear"); +assert.sameValue(datetimeResult.search("111"), -1, "plain datetime, dateStyle = short, timeStyle = medium: nanoseconds should not appear"); + datetimeResult = dateTimeFormatterShortFull.format(datetime); -assert.sameValue(datetimeResult, "8/4/2021, 12:30:45 AM", "plain datetime, dateStyle = short, timeStyle = full"); +// assert.sameValue(datetimeResult, "3/4/2222, 5:06:07 AM", "plain datetime, dateStyle = short, timeStyle = full"); +assert.notSameValue(datetimeResult.search("2222"), -1, "plain datetime, dateStyle = short, timeStyle = full: 4-digit year should appear"); +assert.notSameValue(datetimeResult.search("3"), -1, "plain datetime, dateStyle = short, timeStyle = full: numeric month should appear"); +assert.notSameValue(datetimeResult.search("4"), -1, "plain datetime, dateStyle = short, timeStyle = full: day should appear"); +assert.sameValue(datetimeResult.search("999"), -1, "plain datetime, dateStyle = short, timeStyle = full: microseconds should not appear"); + datetimeResult = dateTimeFormatterMediumLong.format(datetime); -assert.sameValue(datetimeResult, "Aug 4, 2021, 12:30:45 AM", "plain datetime, dateStyle = medium, timeStyle = long"); +// assert.sameValue(datetimeResult, "Mar 4, 2222, 5:06:07 AM", "plain datetime, dateStyle = medium, timeStyle = long"); +assert.notSameValue(datetimeResult.search("2222"), -1, "plain datetime, dateStyle = medium, timeStyle = long: 4-digit year should appear"); +assert.sameValue(datetimeResult.search("3"), -1, "plain datetime, dateStyle = medium, timeStyle = long: numeric month should not appear"); +assert.notSameValue(datetimeResult.search("4"), -1, "plain datetime, dateStyle = medium, timeStyle = long: day should appear"); +assert.sameValue(datetimeResult.search("888"), -1, "plain datetime, dateStyle = medium, timeStyle = long: milliseconds should not appear"); + datetimeResult = dateTimeFormatterMediumShort.format(datetime); -assert.sameValue(datetimeResult, "Aug 4, 2021, 12:30 AM", "plain datetime, dateStyle = medium, timeStyle = short"); +// assert.sameValue(datetimeResult, "Mar 4, 2222, 5:06 AM", "plain datetime, dateStyle = medium, timeStyle = short"); +assert.notSameValue(datetimeResult.search("2222"), -1, "plain datetime, dateStyle = medium, timeStyle = short: 4-digit year should appear"); +assert.sameValue(datetimeResult.search("3"), -1, "plain datetime, dateStyle = medium, timeStyle = short: numeric month should not appear"); +assert.notSameValue(datetimeResult.search("4"), -1, "plain datetime, dateStyle = medium, timeStyle = short: day should appear"); +assert.notSameValue(datetimeResult.search("5"), -1, "plain datetime, dateStyle = medium, timeStyle = short: hour should appear"); +assert.sameValue(datetimeResult.search("888"), -1, "plain datetime, dateStyle = medium, timeStyle = short: milliseconds should not appear"); + datetimeResult = dateTimeFormatterMediumFull.format(datetime); -assert.sameValue(datetimeResult, "Aug 4, 2021, 12:30:45 AM", "plain datetime, dateStyle = medium, timeStyle = full"); +// assert.sameValue(datetimeResult, "Mar 4, 2222, 5:06:07 AM", "plain datetime, dateStyle = medium, timeStyle = full"); +assert.notSameValue(datetimeResult.search("2222"), -1, "plain datetime, dateStyle = medium, timeStyle = full: 4-digit year should appear"); +assert.sameValue(datetimeResult.search("3"), -1, "plain datetime, dateStyle = medium, timeStyle = full: numeric month should not appear"); +assert.notSameValue(datetimeResult.search("4"), -1, "plain datetime, dateStyle = medium, timeStyle = full: day should appear"); +assert.notSameValue(datetimeResult.search("7"), -1, "plain datetime, dateStyle = medium, timeStyle = full: seconds should appear"); +assert.sameValue(datetimeResult.search("888"), -1, "plain datetime, dateStyle = medium, timeStyle = full: milliseconds should not appear"); + datetimeResult = dateTimeFormatterLongMedium.format(datetime); -assert.sameValue(datetimeResult, "August 4, 2021 at 12:30:45 AM", "plain datetime, dateStyle = long, timeStyle = medium"); +// assert.sameValue(datetimeResult, "March 4, 2222 at 5:06:07 AM", "plain datetime, dateStyle = long, timeStyle = medium"); +assert.notSameValue(datetimeResult.search("2222"), -1, "plain datetime, dateStyle = long, timeStyle = medium: 4-digit year should appear"); +assert.sameValue(datetimeResult.search("3"), -1, "plain datetime, dateStyle = long, timeStyle = medium: numeric month should not appear"); +assert.notSameValue(datetimeResult.search("4"), -1, "plain datetime, dateStyle = long, timeStyle = medium: day should appear"); +assert.notSameValue(datetimeResult.search("7"), -1, "plain datetime, dateStyle = long, timeStyle = medium: seconds should appear"); +assert.sameValue(datetimeResult.search("888"), -1, "plain datetime, dateStyle = long, timeStyle = medium: milliseconds should not appear"); + datetimeResult = dateTimeFormatterLongShort.format(datetime); -assert.sameValue(datetimeResult, "August 4, 2021 at 12:30 AM", "plain datetime, dateStyle = long, timeStyle = short"); +// assert.sameValue(datetimeResult, "March 4, 2222 at 5:06 AM", "plain datetime, dateStyle = long, timeStyle = short"); +assert.notSameValue(datetimeResult.search("2222"), -1, "plain datetime, dateStyle = long, timeStyle = short: 4-digit year should appear"); +assert.sameValue(datetimeResult.search("3"), -1, "plain datetime, dateStyle = long, timeStyle = short: numeric month should not appear"); +assert.notSameValue(datetimeResult.search("4"), -1, "plain datetime, dateStyle = long, timeStyle = short: day should appear"); +assert.notSameValue(datetimeResult.search("6"), -1, "plain datetime, dateStyle = long, timeStyle = short: minutes should appear"); +assert.sameValue(datetimeResult.search("7"), -1, "plain datetime, dateStyle = long, timeStyle = short: seconds should not appear"); + datetimeResult = dateTimeFormatterLongFull.format(datetime); -assert.sameValue(datetimeResult, "August 4, 2021 at 12:30:45 AM", "plain datetime, dateStyle = long, timeStyle = full"); +// assert.sameValue(datetimeResult, "March 4, 2222 at 5:06:07 AM", "plain datetime, dateStyle = long, timeStyle = full"); +assert.notSameValue(datetimeResult.search("2222"), -1, "plain datetime, dateStyle = long, timeStyle = full: 4-digit year should appear"); +assert.sameValue(datetimeResult.search("3"), -1, "plain datetime, dateStyle = long, timeStyle = full: numeric month should not appear"); +assert.notSameValue(datetimeResult.search("4"), -1, "plain datetime, dateStyle = long, timeStyle = full: day should appear"); +assert.notSameValue(datetimeResult.search("7"), -1, "plain datetime, dateStyle = long, timeStyle = full: seconds should appear"); +assert.sameValue(datetimeResult.search("888"), -1, "plain datetime, dateStyle = long, timeStyle = full: milliseconds should not appear"); + datetimeResult = dateTimeFormatterFullMedium.format(datetime); -assert.sameValue(datetimeResult, "Wednesday, August 4, 2021 at 12:30:45 AM", "plain datetime, dateStyle = full, timeStyle = medium"); +// assert.sameValue(datetimeResult, "Monday, March 4, 2222 at 5:06:07 AM", "plain datetime, dateStyle = full, timeStyle = medium"); +assert.notSameValue(datetimeResult.search("Monday"), -1, "plain datetime, dateStyle = full, timeStyle = medium: day of week should appear"); +assert.notSameValue(datetimeResult.search("2222"), -1, "plain datetime, dateStyle = full, timeStyle = medium: 4-digit year should appear"); +assert.sameValue(datetimeResult.search("3"), -1, "plain datetime, dateStyle = full, timeStyle = medium: numeric month should not appear"); +assert.notSameValue(datetimeResult.search("4"), -1, "plain datetime, dateStyle = full, timeStyle = medium: day should appear"); +assert.notSameValue(datetimeResult.search("7"), -1, "plain datetime, dateStyle = full, timeStyle = medium: seconds should appear"); +assert.sameValue(datetimeResult.search("999"), -1, "plain datetime, dateStyle = full, timeStyle = medium: microseconds should not appear"); + + datetimeResult = dateTimeFormatterFullShort.format(datetime); -assert.sameValue(datetimeResult, "Wednesday, August 4, 2021 at 12:30 AM", "plain datetime, dateStyle = full, timeStyle = short"); +// assert.sameValue(datetimeResult, "Monday, March 4, 2222 at 5:06 AM", "plain datetime, dateStyle = full, timeStyle = short"); +assert.notSameValue(datetimeResult.search("Monday"), -1, "plain datetime, dateStyle = full, timeStyle = short: day of week should appear"); +assert.notSameValue(datetimeResult.search("2222"), -1, "plain datetime, dateStyle = full, timeStyle = short: 4-digit year should appear"); +assert.sameValue(datetimeResult.search("3"), -1, "plain datetime, dateStyle = full, timeStyle = short: numeric month should not appear"); +assert.notSameValue(datetimeResult.search("4"), -1, "plain datetime, dateStyle = full, timeStyle = short: day should appear"); +assert.notSameValue(datetimeResult.search("6"), -1, "plain datetime, dateStyle = full, timeStyle = short: minutes should appear"); +assert.sameValue(datetimeResult.search("7"), -1, "plain datetime, dateStyle = full, timeStyle = short: seconds should not appear"); + datetimeResult = dateTimeFormatterFullLong.format(datetime); -assert.sameValue(datetimeResult, "Wednesday, August 4, 2021 at 12:30:45 AM", "plain datetime, dateStyle = full, timeStyle = long"); +// assert.sameValue(datetimeResult, "Monday, March 4, 2222 at 5:06:07 AM", "plain datetime, dateStyle = full, timeStyle = long"); +assert.notSameValue(datetimeResult.search("Monday"), -1, "plain datetime, dateStyle = full, timeStyle = long: day of week should appear"); +assert.notSameValue(datetimeResult.search("2222"), -1, "plain datetime, dateStyle = full, timeStyle = long: 4-digit year should appear"); +assert.sameValue(datetimeResult.search("3"), -1, "plain datetime, dateStyle = full, timeStyle = long: numeric month should not appear"); +assert.notSameValue(datetimeResult.search("4"), -1, "plain datetime, dateStyle = full, timeStyle = long: day should appear"); +assert.notSameValue(datetimeResult.search("6"), -1, "plain datetime, dateStyle = full, timeStyle = long: minutes should appear"); +assert.notSameValue(datetimeResult.search("7"), -1, "plain datetime, dateStyle = full, timeStyle = long: seconds should appear"); +assert.sameValue(datetimeResult.search("888"), -1, "plain datetime, dateStyle = full, timeStyle = long: milliseconds should not appear"); // PlainMonthDay -var monthdayResult = dateFormatterShort.format(monthday); -assert.sameValue(monthdayResult, "8/4", "plain monthday, dateStyle=short"); -monthdayResult = dateFormatterMedium.format(monthday); -assert.sameValue(monthdayResult, "Aug 4", "plain monthday, dateStyle=medium"); -monthdayResult = dateFormatterLong.format(monthday); -assert.sameValue(monthdayResult, "August 4", "plain monthday, dateStyle=long"); -monthdayResult = dateFormatterFull.format(monthday); -assert.sameValue(monthdayResult, "August 4", "plain monthday, dateStyle=full"); +// Use a reference year so we can check that it doesn't occur in any string output +const monthday = new Temporal.PlainMonthDay(3, 4, "gregory", 5678); + +const monthdayResultShort = dateFormatterShort.format(monthday); +// assert.sameValue(monthdayResultShort, "3/4", "plain monthday, dateStyle=short"); +assert.sameValue(monthdayResultShort.search("78"), -1, "plain monthday, dateStyle=short: year should not appear"); +assert.notSameValue(monthdayResultShort.search("3"), -1, "plain monthday, dateStyle=short: month should appear"); +assert.notSameValue(monthdayResultShort.search("4"), -1, "plain monthday, dateStyle=short: day should appear"); + +const monthdayResultMedium = dateFormatterMedium.format(monthday); +// assert.sameValue(monthdayResultMedium, "Mar 4", "plain monthday, dateStyle=medium"); +assert.sameValue(monthdayResultMedium.search("5678"), -1, "plain monthday, dateStyle=medium: year should not appear"); +assert.sameValue(monthdayResultMedium.search("3"), -1, "plain monthday, dateStyle=medium: numeric month should not appear"); +assert.notSameValue(monthdayResultMedium.search("4"), -1, "plain monthday, dateStyle=medium: day should appear"); + +const monthdayResultLong = dateFormatterLong.format(monthday); +// assert.sameValue(monthdayResultLong, "March 4", "plain monthday, dateStyle=long"); +assert.sameValue(monthdayResultLong.search("5678"), -1, "plain monthday, dateStyle=long: year should not appear"); +assert.sameValue(monthdayResultLong.search("3"), -1, "plain monthday, dateStyle=long: numeric month should not appear"); +assert.notSameValue(monthdayResultLong.search("4"), -1, "plain monthday, dateStyle=long: day should appear"); + +const monthdayResultFull = dateFormatterFull.format(monthday); +// assert.sameValue(monthdayResultFull, "March 4", "plain monthday, dateStyle=full"); +assert.sameValue(monthdayResultFull.search("5678"), -1, "plain monthday, dateStyle=full: year should not appear"); +assert.sameValue(monthdayResultFull.search("3"), -1, "plain monthday, dateStyle=full: numeric month should not appear"); +assert.notSameValue(monthdayResultFull.search("4"), -1, "plain monthday, dateStyle=full: day should appear"); + assert.throws(TypeError, () => timeFormatterShort.format(monthday), "plain monthday, timeStyle=short"); assert.throws(TypeError, () => timeFormatterMedium.format(monthday), "plain monthday, timeStyle=medium"); assert.throws(TypeError, () => timeFormatterLong.format(monthday), "plain monthday, timeStyle=long"); assert.throws(TypeError, () => timeFormatterFull.format(monthday), "plain monthday, timeStyle=full"); -monthdayResult = dateTimeFormatterShort.format(monthday); -assert.sameValue(monthdayResult, "8/4", "plain monthday, dateStyle = timeStyle = short"); + +var monthdayResult = dateTimeFormatterShort.format(monthday); +assert.sameValue(monthdayResult, monthdayResultShort, "plain monthday, dateStyle = timeStyle = short: should match output with dateStyle only"); + monthdayResult = dateTimeFormatterMedium.format(monthday); -assert.sameValue(monthdayResult, "Aug 4", "plain monthday, dateStyle = timeStyle = medium"); +assert.sameValue(monthdayResult, monthdayResultMedium, "plain monthday, dateStyle = timeStyle = medium: should match output with dateStyle only"); + monthdayResult = dateTimeFormatterLong.format(monthday); -assert.sameValue(monthdayResult, "August 4", "plain monthday, dateStyle = timeStyle = long"); +assert.sameValue(monthdayResult, monthdayResultLong, "plain monthday, dateStyle = timeStyle = long: should match output with dateStyle only"); + monthdayResult = dateTimeFormatterFull.format(monthday); -assert.sameValue(monthdayResult, "August 4", "plain monthday, dateStyle = timeStyle = full"); +assert.sameValue(monthdayResult, monthdayResultLong, "plain monthday, dateStyle = timeStyle = full: should match output with dateStyle only"); + monthdayResult = dateTimeFormatterShortLong.format(monthday); -assert.sameValue(monthdayResult, "8/4", "plain monthday, dateStyle = short, timeStyle = long"); +assert.sameValue(monthdayResult, monthdayResultShort, "plain monthday, dateStyle short, = timeStyle = long: should match output with dateStyle only"); // PlainYearMonth -var yearmonthResult = dateFormatterShort.format(yearmonth); -assert.sameValue(yearmonthResult, "8/21", "plain yearmonth, dateStyle=short"); -yearmonthResult = dateFormatterMedium.format(yearmonth); -assert.sameValue(yearmonthResult, "Aug 2021", "plain yearmonth, dateStyle=medium"); -yearmonthResult = dateFormatterLong.format(yearmonth); -assert.sameValue(yearmonthResult, "August 2021", "plain yearmonth, dateStyle=long"); -yearmonthResult = dateFormatterFull.format(yearmonth); -assert.sameValue(yearmonthResult, "August 2021", "plain yearmonth, dateStyle=full"); +// Use a reference day so we can check that it doesn't occur in any string output +const yearmonth = new Temporal.PlainYearMonth(2222, 1, "gregory", 30); + +const yearmonthResultShort = dateFormatterShort.format(yearmonth); +// assert.sameValue(yearmonthResultShort, "1/22", "plain yearmonth, dateStyle=short"); +assert.sameValue(yearmonthResultShort.search("30"), -1, "plain yearmonth, dateStyle=short: day should not appear"); +assert.notSameValue(yearmonthResultShort.search("1"), -1, "plain yearmonth, dateStyle=short: numeric month should appear"); +assert.notSameValue(yearmonthResultShort.search("22"), -1, "plain yearmonth, dateStyle=short: 2-digit year should appear"); + +const yearmonthResultMedium = dateFormatterMedium.format(yearmonth); +// assert.sameValue(yearmonthResultMedium, "Jan 2222", "plain yearmonth, dateStyle=medium"); +assert.sameValue(yearmonthResultMedium.search("30"), -1, "plain yearmonth, dateStyle=medium: day should not appear"); +assert.sameValue(yearmonthResultMedium.search("1"), -1, "plain yearmonth, dateStyle=medium: numeric month should not appear"); +assert.notSameValue(yearmonthResultMedium.search("2222"), -1, "plain yearmonth, dateStyle=medium: 4-digit year should appear"); + +const yearmonthResultLong = dateFormatterLong.format(yearmonth); +// assert.sameValue(yearmonthResultLong, "January 2222", "plain yearmonth, dateStyle=long"); +assert.sameValue(yearmonthResultLong.search("30"), -1, "plain yearmonth, dateStyle=long: day should not appear"); +assert.sameValue(yearmonthResultLong.search("1"), -1, "plain yearmonth, dateStyle=long: numeric month should not appear"); +assert.notSameValue(yearmonthResultLong.search("2222"), -1, "plain yearmonth, dateStyle=long: 4-digit year should appear"); + +const yearmonthResultFull = dateFormatterFull.format(yearmonth); +// assert.sameValue(yearmonthResultFull, "January 2222", "plain yearmonth, dateStyle=full"); +assert.sameValue(yearmonthResultFull.search("30"), -1, "plain yearmonth, dateStyle=full: day should not appear"); +assert.sameValue(yearmonthResultFull.search("1"), -1, "plain yearmonth, dateStyle=full: numeric month should not appear"); +assert.notSameValue(yearmonthResultFull.search("2222"), -1, "plain yearmonth, dateStyle=full: 4-digit year should appear"); + assert.throws(TypeError, () => timeFormatterShort.format(yearmonth), "plain yearmonth, timeStyle=short"); assert.throws(TypeError, () => timeFormatterMedium.format(yearmonth), "plain yearmonth, timeStyle=medium"); assert.throws(TypeError, () => timeFormatterLong.format(yearmonth), "plain yearmonth, timeStyle=long"); assert.throws(TypeError, () => timeFormatterFull.format(yearmonth), "plain yearmonth, timeStyle=full"); -yearmonthResult = dateTimeFormatterShort.format(yearmonth); -assert.sameValue(yearmonthResult, "8/21", "plain yearmonth, dateStyle = timeStyle = short"); + +var yearmonthResult = dateTimeFormatterShort.format(yearmonth); +assert.sameValue(yearmonthResult, yearmonthResultShort, "plain yearmonth, dateStyle = timeStyle = short"); yearmonthResult = dateTimeFormatterMedium.format(yearmonth); -assert.sameValue(yearmonthResult, "Aug 2021", "plain yearmonth, dateStyle = timeStyle = medium"); +assert.sameValue(yearmonthResult, yearmonthResultMedium, "plain yearmonth, dateStyle = timeStyle = medium"); yearmonthResult = dateTimeFormatterLong.format(yearmonth); -assert.sameValue(yearmonthResult, "August 2021", "plain yearmonth, dateStyle = timeStyle = long"); +assert.sameValue(yearmonthResult, yearmonthResultLong, "plain yearmonth, dateStyle = timeStyle = long"); yearmonthResult = dateTimeFormatterFull.format(yearmonth); -assert.sameValue(yearmonthResult, "August 2021", "plain yearmonth, dateStyle = timeStyle = full"); +assert.sameValue(yearmonthResult, yearmonthResultFull, "plain yearmonth, dateStyle = timeStyle = full"); yearmonthResult = dateTimeFormatterShortLong.format(yearmonth); -assert.sameValue(yearmonthResult, "8/21", "plain yearmonth, dateStyle = short, timeStyle = long"); +assert.sameValue(yearmonthResult, yearmonthResultShort, "plain yearmonth, dateStyle = short, timeStyle = long"); // PlainTime +const time = new Temporal.PlainTime(0, 34, 56, 777, 888, 999); + assert.throws(TypeError, () => dateFormatterShort.format(time), "plain time, dateStyle=short"); assert.throws(TypeError, () => dateFormatterMedium.format(time), "plain time, dateStyle=medium"); assert.throws(TypeError, () => dateFormatterLong.format(time), "plain time, dateStyle=long"); -var timeResult = timeFormatterShort.format(time); -assert.sameValue(timeResult, "12:30 AM", "plain time, dateStyle=short"); -timeResult = timeFormatterMedium.format(time); -assert.sameValue(timeResult, "12:30:45 AM", "plain time, dateStyle=medium"); -timeResult = timeFormatterLong.format(time); -assert.sameValue(timeResult, "12:30:45 AM", "plain time, dateStyle=long"); -timeResult = dateTimeFormatterShort.format(time); -assert.sameValue(timeResult, "12:30 AM", "plain time, dateStyle = timeStyle = short"); + +const timeResultShort = timeFormatterShort.format(time); +// assert.sameValue(timeResultShort, "12:34 AM", "plain time, dateStyle=short"); +assert.notSameValue(timeResultShort.search("12"), -1, "plainTime, dateStyle=short: hour should appear"); +assert.sameValue(timeResultShort.search("56"), -1, "plainTime, dateStyle=short: seconds should not appear"); + +const timeResultMedium = timeFormatterMedium.format(time); +// assert.sameValue(timeResultMedium, "12:34:56 AM", "plain time, dateStyle=medium"); +assert.notSameValue(timeResultMedium.search("56"), -1, "plainTime, dateStyle=medium: seconds should appear"); +assert.sameValue(timeResultMedium.search("777"), -1, "plainTime, dateStyle=medium: milliseconds should not appear"); + +const timeResultLong = timeFormatterLong.format(time); +// assert.sameValue(timeResultLong, "12:34:56 AM", "plain time, dateStyle=long"); +assert.notSameValue(timeResultMedium.search("34"), -1, "plainTime, dateStyle=long: minutes should appear"); +assert.sameValue(timeResultMedium.search("888"), -1, "plainTime, dateStyle=long: microseconds should not appear"); + +var timeResult = dateTimeFormatterShort.format(time); +assert.sameValue(timeResult, timeResultShort, "plain time, dateStyle = timeStyle = short"); + timeResult = dateTimeFormatterMedium.format(time); -assert.sameValue(timeResult, "12:30:45 AM", "plain time, dateStyle = timeStyle = medium"); +assert.sameValue(timeResult, timeResultMedium, "plain time, dateStyle = timeStyle = medium"); + timeResult = dateTimeFormatterLong.format(time); -assert.sameValue(timeResult, "12:30:45 AM", "plain time, dateStyle = timeStyle = long"); +assert.sameValue(timeResult, timeResultLong, "plain time, dateStyle = timeStyle = long"); + timeResult = dateTimeFormatterFull.format(time); -assert.sameValue(timeResult, "12:30:45 AM", "plain time, dateStyle = timeStyle = full"); +assert.sameValue(timeResult, timeResultLong, "plain time, dateStyle = timeStyle = full"); + timeResult = dateTimeFormatterShortLong.format(time); -assert.sameValue(timeResult, "12:30:45 AM", "plain time, dateStyle = short, timeStyle = long"); +assert.sameValue(timeResult, timeResultLong, "plain time, dateStyle = short, timeStyle = long"); + +