Test all combinations in temporal-plaindatetime-formatting-datetime-style

This commit is contained in:
André Bargull 2025-05-22 11:59:01 +02:00 committed by Ms2ger
parent 96695862e2
commit 3316c0aaf6

View File

@ -8,202 +8,169 @@ locale: [en-US]
features: [Temporal] features: [Temporal]
---*/ ---*/
const dateFormatterShort = new Intl.DateTimeFormat("en-US", { dateStyle: "short", timeZone: "Pacific/Apia" }); const locale = "en-US";
const dateFormatterMedium = new Intl.DateTimeFormat("en-US", { dateStyle: "medium", timeZone: "Pacific/Apia" }); const timeZone = "Pacific/Apia";
const dateFormatterLong = new Intl.DateTimeFormat("en-US", { dateStyle: "long", timeZone: "Pacific/Apia" });
const dateFormatterFull = new Intl.DateTimeFormat("en-US", { dateStyle: "full", timeZone: "Pacific/Apia" }); const dateStyles = [
const timeFormatterShort = new Intl.DateTimeFormat("en-US", { timeStyle: "short", timeZone: "Pacific/Apia" }); "full", "long", "medium", "short",
const timeFormatterMedium = new Intl.DateTimeFormat("en-US", { timeStyle: "medium", timeZone: "Pacific/Apia" }); ];
const timeFormatterLong = new Intl.DateTimeFormat("en-US", { timeStyle: "long", timeZone: "Pacific/Apia" });
const timeFormatterFull = new Intl.DateTimeFormat("en-US", { timeStyle: "full", timeZone: "Pacific/Apia" }); const timeStyles = [
const dateTimeFormatterShort = new Intl.DateTimeFormat("en-US", { dateStyle: "short", timeStyle: "short", timeZone: "Pacific/Apia" }); "full", "long", "medium", "short",
const dateTimeFormatterMedium = new Intl.DateTimeFormat("en-US", { dateStyle: "medium", timeStyle: "medium", timeZone: "Pacific/Apia" }); ];
const dateTimeFormatterLong = new Intl.DateTimeFormat("en-US", { dateStyle: "long", timeStyle: "long", timeZone: "Pacific/Apia" });
const dateTimeFormatterFull = new Intl.DateTimeFormat("en-US", { dateStyle: "full", timeStyle: "full", timeZone: "Pacific/Apia" });
const dateTimeFormatterShortLong = new Intl.DateTimeFormat("en-US", { dateStyle: "short", timeStyle: "long", timeZone: "Pacific/Apia" });
const dateTimeFormatterShortMedium = new Intl.DateTimeFormat("en-US", { dateStyle: "short", timeStyle: "medium", timeZone: "Pacific/Apia" });
const dateTimeFormatterShortFull = new Intl.DateTimeFormat("en-US", { dateStyle: "short", timeStyle: "full", timeZone: "Pacific/Apia" });
const dateTimeFormatterMediumLong = new Intl.DateTimeFormat("en-US", { dateStyle: "medium", timeStyle: "long", timeZone: "Pacific/Apia" });
const dateTimeFormatterMediumShort = new Intl.DateTimeFormat("en-US", { dateStyle: "medium", timeStyle: "short", timeZone: "Pacific/Apia" });
const dateTimeFormatterMediumFull = new Intl.DateTimeFormat("en-US", { dateStyle: "medium", timeStyle: "full", timeZone: "Pacific/Apia" });
const dateTimeFormatterLongMedium = new Intl.DateTimeFormat("en-US", { dateStyle: "long", timeStyle: "medium", timeZone: "Pacific/Apia" });
const dateTimeFormatterLongShort = new Intl.DateTimeFormat("en-US", { dateStyle: "long", timeStyle: "short", timeZone: "Pacific/Apia" });
const dateTimeFormatterLongFull = new Intl.DateTimeFormat("en-US", { dateStyle: "long", timeStyle: "full", timeZone: "Pacific/Apia" });
const dateTimeFormatterFullMedium = new Intl.DateTimeFormat("en-US", { dateStyle: "full", timeStyle: "medium", timeZone: "Pacific/Apia" });
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" });
// Use a PlainDateTime with unique values in each field, so as to make it easier // Use a PlainDateTime with unique values in each field, so as to make it easier
// to test which values appear in the formatted output // to test which values appear in the formatted output
const datetime = new Temporal.PlainDateTime(2222, 3, 4, 5, 6, 7, 888, 999, 111); const datetime = new Temporal.PlainDateTime(2222, 3, 4, 5, 6, 7, 888, 999, 111);
var datetimeResult = dateFormatterShort.format(datetime); const expectedDate = {
// assert.sameValue(datetimeResult, "3/4/22", "plain datetime, dateStyle=short"); // "Monday, March 4, 2222"
assert.sameValue(datetimeResult.search("888"), -1, "plain datetime, dateStyle=short"); full: {
year: ["2222", true],
month: ["3", false],
day: ["4", true],
},
datetimeResult = dateFormatterMedium.format(datetime); // "March 4, 2222"
// assert.sameValue(datetimeResult, "Mar 4, 2222", "plain datetime, dateStyle=medium"); long: {
assert.sameValue(datetimeResult.search("3"), -1, "plain datetime, dateStyle=medium: numeric month should not appear"); year: ["2222", true],
assert.notSameValue(datetimeResult.search("4"), -1, "plain datetime, dateStyle=medium: day should appear"); month: ["3", false],
assert.sameValue(datetimeResult.search("999"), -1, "plain datetime, dateStyle=medium: microseconds should not appear"); day: ["4", true],
},
datetimeResult = dateFormatterLong.format(datetime); // "Mar 4, 2222"
// assert.sameValue(datetimeResult, "March 4, 2222", "plain datetime, dateStyle=long"); medium: {
assert.sameValue(datetimeResult.search("3"), -1, "plain datetime, dateStyle=long: numeric month should not appear"); year: ["2222", true],
assert.notSameValue(datetimeResult.search("4"), -1, "plain datetime, dateStyle=long: day should appear"); month: ["3", false],
assert.sameValue(datetimeResult.search("999"), -1, "plain datetime, dateStyle=long: nanoseconds should not appear"); day: ["4", true],
},
datetimeResult = dateFormatterFull.format(datetime); // "3/4/22"
// assert.sameValue(datetimeResult, "Monday, March 4, 2222", "plain datetime, dateStyle=full"); short: {
assert.notSameValue(datetimeResult.search("Monday"), -1, "plain datetime, dateStyle=full: day of week should appear"); year: ["22", true],
assert.notSameValue(datetimeResult.search("4"), -1, "plain datetime, dateStyle=full: day should appear"); month: ["3", true],
assert.sameValue(datetimeResult.search("888"), -1, "plain datetime, dateStyle=long: milliseconds should not appear"); day: ["4", true],
},
};
datetimeResult = timeFormatterShort.format(datetime); const expectedTime = {
// assert.sameValue(datetimeResult, "5:06 AM", "plain datetime, timeStyle=short"); // "5:06:07 AM"
assert.sameValue(datetimeResult.search("3"), -1, "plain datetime, timeStyle=short: month should not appear"); full: {
assert.sameValue(datetimeResult.search("4"), -1, "plain datetime, timeStyle=short: day should not appear"); hour: true,
assert.notSameValue(datetimeResult.search("5"), -1, "plain datetime, timeStyle=short: hour should appear"); minute: true,
second: true,
millisecond: false,
microsecond: false,
nanosecond: false,
},
datetimeResult = timeFormatterMedium.format(datetime); // "5:06:07 AM"
// assert.sameValue(datetimeResult, "5:06:07 AM", "plain datetime, timeStyle=medium"); long: {
assert.sameValue(datetimeResult.search("3"), -1, "plain datetime, timeStyle=medium: month should not appear"); hour: true,
assert.sameValue(datetimeResult.search("4"), -1, "plain datetime, timeStyle=medium: day should not appear"); minute: true,
assert.notSameValue(datetimeResult.search("7"), -1, "plain datetime, timeStyle=medium: seconds should appear"); second: true,
millisecond: false,
microsecond: false,
nanosecond: false,
},
datetimeResult = timeFormatterLong.format(datetime); // "5:06:07 AM"
// assert.sameValue(datetimeResult, "5:06:07 AM", "plain datetime, timeStyle=long"); medium: {
assert.sameValue(datetimeResult.search("3"), -1, "plain datetime, timeStyle=long: month should not appear"); hour: true,
assert.sameValue(datetimeResult.search("4"), -1, "plain datetime, timeStyle=long: day should not appear"); minute: true,
assert.notSameValue(datetimeResult.search("6"), -1, "plain datetime, timeStyle=long: minutes should appear"); second: true,
millisecond: false,
microsecond: false,
nanosecond: false,
},
datetimeResult = timeFormatterFull.format(datetime); // "5:06 AM"
// assert.sameValue(datetimeResult, "5:06:07 AM", "plain datetime, timeStyle=full"); short: {
assert.sameValue(datetimeResult.search("3"), -1, "plain datetime, timeStyle=full: month should not appear"); hour: true,
assert.sameValue(datetimeResult.search("4"), -1, "plain datetime, timeStyle=full: day should not appear"); minute: true,
assert.notSameValue(datetimeResult.search("7"), -1, "plain datetime, timeStyle=full: seconds should appear"); second: false,
millisecond: false,
microsecond: false,
nanosecond: false,
},
};
datetimeResult = dateTimeFormatterShort.format(datetime); function ensureDateField(result, field, dateStyle) {
// assert.sameValue(datetimeResult, "3/4/22, 5:06 AM", "plain datetime, dateStyle = timeStyle = short"); let [searchValue, present] = expectedDate[dateStyle][field];
assert.notSameValue(datetimeResult.search("3"), -1, "plain datetime, dateStyle = timeStyle = short: numeric month should appear"); let verb = present ? "should" : "should not";
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(
// assert.sameValue(datetimeResult, "Mar 4, 2222, 5:06:07 AM", "plain datetime, dateStyle = timeStyle = medium"); result.includes(searchValue),
assert.sameValue(datetimeResult.search("3"), -1, "plain datetime, dateStyle = timeStyle = medium: numeric month should not appear"); present,
assert.notSameValue(datetimeResult.search("4"), -1, "plain datetime, dateStyle = timeStyle = medium: day should appear"); `dateStyle=${dateStyle}: ${field} ${verb} 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); function ensureTimeField(result, field, value, timeStyle) {
// assert.sameValue(datetimeResult, "March 4, 2222 at 5:06:07 AM", "plain datetime, dateStyle = timeStyle = long"); let present = expectedTime[timeStyle][field];
assert.sameValue(datetimeResult.search("3"), -1, "plain datetime, dateStyle = timeStyle = long: numeric month should not appear"); let verb = present ? "should" : "should not";
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(
// assert.sameValue(datetimeResult, "Monday, March 4, 2222 at 5:06:07 AM", "plain datetime, dateStyle = timeStyle = full"); result.includes(value),
assert.notSameValue(datetimeResult.search("Monday"), -1, "plain datetime, dateStyle = timeStyle = full: day of week should appear"); present,
assert.notSameValue(datetimeResult.search("4"), -1, "plain datetime, dateStyle = timeStyle = full: day should appear"); `timeStyle=${timeStyle}: ${field} ${verb} appear`
assert.sameValue(datetimeResult.search("888"), -1, "plain datetime, dateStyle = timeStyle = full: milliseconds should not appear"); );
}
datetimeResult = dateTimeFormatterShortLong.format(datetime); for (let dateStyle of dateStyles) {
// assert.sameValue(datetimeResult, "3/4/22, 5:06:07 AM", "plain datetime, dateStyle = short, timeStyle = long"); let dtf = new Intl.DateTimeFormat(locale, {dateStyle, timeZone});
assert.sameValue(datetimeResult.search("2222"), -1, "plain datetime, dateStyle = short, timeStyle = long: 4-digit year should not appear"); let result = dtf.format(datetime);
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");
ensureDateField(result, "year", dateStyle);
ensureDateField(result, "month", dateStyle);
ensureDateField(result, "day", dateStyle);
datetimeResult = dateTimeFormatterShortMedium.format(datetime); if (dateStyle === "full") {
// assert.sameValue(datetimeResult, "3/4/22, 5:06:07 AM", "plain datetime, dateStyle = short, timeStyle = medium"); assert.sameValue(result.includes("Monday"), true, `dateStyle=${dateStyle}: day of week should appear`);
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(result.includes("5"), false, `dateStyle=${dateStyle}: hour should not appear`);
// assert.sameValue(datetimeResult, "3/4/22, 5:06:07 AM", "plain datetime, dateStyle = short, timeStyle = full"); assert.sameValue(result.includes("6"), false, `dateStyle=${dateStyle}: minute should not appear`);
assert.sameValue(datetimeResult.search("2222"), -1, "plain datetime, dateStyle = short, timeStyle = full: 4-digit year should not appear"); assert.sameValue(result.includes("7"), false, `dateStyle=${dateStyle}: second should not appear`);
assert.notSameValue(datetimeResult.search("3"), -1, "plain datetime, dateStyle = short, timeStyle = full: numeric month should appear"); assert.sameValue(result.includes("888"), false, `dateStyle=${dateStyle}: millisecond should not appear`);
assert.notSameValue(datetimeResult.search("4"), -1, "plain datetime, dateStyle = short, timeStyle = full: day should appear"); assert.sameValue(result.includes("999"), false, `dateStyle=${dateStyle}: microsecond should not appear`);
assert.sameValue(datetimeResult.search("999"), -1, "plain datetime, dateStyle = short, timeStyle = full: microseconds should not appear"); assert.sameValue(result.includes("111"), false, `dateStyle=${dateStyle}: nanosecond should not appear`);
}
datetimeResult = dateTimeFormatterMediumLong.format(datetime); for (let timeStyle of timeStyles) {
// assert.sameValue(datetimeResult, "Mar 4, 2222, 5:06:07 AM", "plain datetime, dateStyle = medium, timeStyle = long"); let dtf = new Intl.DateTimeFormat(locale, {timeStyle, timeZone});
assert.notSameValue(datetimeResult.search("2222"), -1, "plain datetime, dateStyle = medium, timeStyle = long: 4-digit year should appear"); let result = dtf.format(datetime);
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(result.includes("2"), false, `timeStyle=${timeStyle}: year should not appear`);
// assert.sameValue(datetimeResult, "Mar 4, 2222, 5:06 AM", "plain datetime, dateStyle = medium, timeStyle = short"); assert.sameValue(result.includes("3"), false, `timeStyle=${timeStyle}: month should not appear`);
assert.notSameValue(datetimeResult.search("2222"), -1, "plain datetime, dateStyle = medium, timeStyle = short: 4-digit year should appear"); assert.sameValue(result.includes("4"), false, `timeStyle=${timeStyle}: day should not 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); ensureTimeField(result, "hour", "5", timeStyle);
// assert.sameValue(datetimeResult, "Mar 4, 2222, 5:06:07 AM", "plain datetime, dateStyle = medium, timeStyle = full"); ensureTimeField(result, "minute", "6", timeStyle);
assert.notSameValue(datetimeResult.search("2222"), -1, "plain datetime, dateStyle = medium, timeStyle = full: 4-digit year should appear"); ensureTimeField(result, "second", "7", timeStyle);
assert.sameValue(datetimeResult.search("3"), -1, "plain datetime, dateStyle = medium, timeStyle = full: numeric month should not appear"); ensureTimeField(result, "millisecond", "888", timeStyle);
assert.notSameValue(datetimeResult.search("4"), -1, "plain datetime, dateStyle = medium, timeStyle = full: day should appear"); ensureTimeField(result, "microsecond", "999", timeStyle);
assert.notSameValue(datetimeResult.search("7"), -1, "plain datetime, dateStyle = medium, timeStyle = full: seconds should appear"); ensureTimeField(result, "nanosecond", "111", timeStyle);
assert.sameValue(datetimeResult.search("888"), -1, "plain datetime, dateStyle = medium, timeStyle = full: milliseconds should not appear"); }
datetimeResult = dateTimeFormatterLongMedium.format(datetime); for (let dateStyle of dateStyles) {
// assert.sameValue(datetimeResult, "March 4, 2222 at 5:06:07 AM", "plain datetime, dateStyle = long, timeStyle = medium"); for (let timeStyle of timeStyles) {
assert.notSameValue(datetimeResult.search("2222"), -1, "plain datetime, dateStyle = long, timeStyle = medium: 4-digit year should appear"); let dtf = new Intl.DateTimeFormat(locale, {dateStyle, timeStyle, timeZone});
assert.sameValue(datetimeResult.search("3"), -1, "plain datetime, dateStyle = long, timeStyle = medium: numeric month should not appear"); let result = dtf.format(datetime);
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); ensureDateField(result, "year", dateStyle);
// assert.sameValue(datetimeResult, "March 4, 2222 at 5:06 AM", "plain datetime, dateStyle = long, timeStyle = short"); ensureDateField(result, "month", dateStyle);
assert.notSameValue(datetimeResult.search("2222"), -1, "plain datetime, dateStyle = long, timeStyle = short: 4-digit year should appear"); ensureDateField(result, "day", dateStyle);
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); if (dateStyle === "full") {
// assert.sameValue(datetimeResult, "March 4, 2222 at 5:06:07 AM", "plain datetime, dateStyle = long, timeStyle = full"); assert.sameValue(result.includes("Monday"), true, `dateStyle=${dateStyle}: day of week should appear`);
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); ensureTimeField(result, "hour", "5", timeStyle);
// assert.sameValue(datetimeResult, "Monday, March 4, 2222 at 5:06:07 AM", "plain datetime, dateStyle = full, timeStyle = medium"); ensureTimeField(result, "minute", "6", timeStyle);
assert.notSameValue(datetimeResult.search("Monday"), -1, "plain datetime, dateStyle = full, timeStyle = medium: day of week should appear"); ensureTimeField(result, "second", "7", timeStyle);
assert.notSameValue(datetimeResult.search("2222"), -1, "plain datetime, dateStyle = full, timeStyle = medium: 4-digit year should appear"); ensureTimeField(result, "millisecond", "888", timeStyle);
assert.sameValue(datetimeResult.search("3"), -1, "plain datetime, dateStyle = full, timeStyle = medium: numeric month should not appear"); ensureTimeField(result, "microsecond", "999", timeStyle);
assert.notSameValue(datetimeResult.search("4"), -1, "plain datetime, dateStyle = full, timeStyle = medium: day should appear"); ensureTimeField(result, "nanosecond", "111", timeStyle);
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, "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, "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");