49 lines
1.3 KiB
JavaScript
49 lines
1.3 KiB
JavaScript
function shouldThrow(func, errorMessage) {
|
|
var errorThrown = false;
|
|
var error = null;
|
|
try {
|
|
func();
|
|
} catch (e) {
|
|
errorThrown = true;
|
|
error = e;
|
|
}
|
|
if (!errorThrown)
|
|
throw new Error("not thrown");
|
|
if (String(error) !== errorMessage)
|
|
throw new Error(`bad error: ${String(error)}`);
|
|
}
|
|
|
|
let options = {
|
|
"weekday": "narrow",
|
|
"era": "narrow",
|
|
"year": "2-digit",
|
|
"month": "2-digit",
|
|
"day": "2-digit",
|
|
"hour": "2-digit",
|
|
"minute": "2-digit",
|
|
"second": "2-digit",
|
|
"timeZoneName": "short",
|
|
};
|
|
|
|
for (let [key, value] of Object.entries(options)) {
|
|
shouldThrow(() => {
|
|
new Intl.DateTimeFormat("en", {
|
|
dateStyle: "full",
|
|
[key]: value
|
|
});
|
|
}, `TypeError: dateStyle and timeStyle may not be used with other DateTimeFormat options`);
|
|
shouldThrow(() => {
|
|
new Intl.DateTimeFormat("en", {
|
|
timeStyle: "full",
|
|
[key]: value
|
|
});
|
|
}, `TypeError: dateStyle and timeStyle may not be used with other DateTimeFormat options`);
|
|
shouldThrow(() => {
|
|
new Intl.DateTimeFormat("en", {
|
|
dateStyle: "full",
|
|
timeStyle: "full",
|
|
[key]: value
|
|
});
|
|
}, `TypeError: dateStyle and timeStyle may not be used with other DateTimeFormat options`);
|
|
}
|