2020-06-12 16:56:05 +00:00
|
|
|
// Copyright 2020 the V8 project authors. All rights reserved.
|
|
|
|
// Use of this source code is governed by a BSD-style license that can be
|
|
|
|
// found in the LICENSE file.
|
|
|
|
|
|
|
|
// Test
|
|
|
|
// https://github.com/tc39/proposal-intl-datetime-style/pull/43
|
|
|
|
// https://github.com/tc39/proposal-intl-datetime-style/pull/47
|
|
|
|
// https://github.com/tc39/proposal-intl-datetime-style/pull/50
|
|
|
|
let opt = {
|
|
|
|
weekday: 'narrow',
|
|
|
|
era: 'narrow',
|
|
|
|
year: '2-digit',
|
|
|
|
month: '2-digit',
|
|
|
|
day: '2-digit',
|
|
|
|
hour: '2-digit',
|
|
|
|
minute: '2-digit',
|
2020-09-10 00:21:00 +00:00
|
|
|
fractionalSecondDigits: 2,
|
2020-06-12 16:56:05 +00:00
|
|
|
};
|
|
|
|
|
|
|
|
let keys = Object.keys(opt);
|
|
|
|
let testDateStyle = { ...opt };
|
|
|
|
let testTimeStyle = { ...opt };
|
|
|
|
testDateStyle.dateStyle = 'long';
|
|
|
|
testTimeStyle.timeStyle = 'long';
|
|
|
|
|
|
|
|
for (key of keys) {
|
|
|
|
assertThrows(
|
|
|
|
() => new Intl.DateTimeFormat('en', testDateStyle),
|
2020-09-10 00:21:00 +00:00
|
|
|
TypeError, "Can't set option " + key + " when dateStyle is used");
|
2020-06-12 16:56:05 +00:00
|
|
|
assertThrows(
|
|
|
|
() => new Intl.DateTimeFormat('en', testTimeStyle),
|
2020-09-10 00:21:00 +00:00
|
|
|
TypeError, "Can't set option " + key + " when timeStyle is used");
|
2020-06-12 16:56:05 +00:00
|
|
|
testDateStyle[key] = undefined;
|
|
|
|
testTimeStyle[key] = undefined;
|
|
|
|
}
|
|
|
|
|
|
|
|
assertThrows(
|
|
|
|
() => (new Date()).toLocaleDateString("en", {timeStyle: "long"}),
|
|
|
|
TypeError, "Invalid option : timeStyle");
|
|
|
|
|
|
|
|
assertThrows(
|
|
|
|
() => (new Date()).toLocaleTimeString("en", {dateStyle: "long"}),
|
|
|
|
TypeError, "Invalid option : dateStyle");
|
|
|
|
|
|
|
|
let logs = [];
|
|
|
|
try {
|
|
|
|
var dtf = new Intl.DateTimeFormat("en", {
|
|
|
|
get timeStyle() {
|
|
|
|
logs.push("get timeStyle");
|
|
|
|
return "full";
|
|
|
|
},
|
|
|
|
get timeZoneName() {
|
|
|
|
logs.push("get timeZoneName");
|
|
|
|
return "short";
|
|
|
|
},
|
|
|
|
});
|
|
|
|
logs.push(dtf.resolvedOptions().timeStyle);
|
|
|
|
logs.push(dtf.resolvedOptions().timeZoneName);
|
|
|
|
} catch(e) {
|
|
|
|
logs.push(e.name);
|
|
|
|
}
|
|
|
|
|
|
|
|
assertEquals(
|
|
|
|
"get timeStyle,get timeZoneName,get timeStyle,TypeError",
|
|
|
|
logs.join(','));
|