mirror of https://github.com/tc39/test262.git
Add test case for tc39/ecma402#204
This commit is contained in:
parent
2cb0028bf1
commit
0ec5b02ac6
87
test/intl402/DateTimeFormat/prototype/resolvedOptions/resolved-locale-with-hc-unicode.js
vendored
Normal file
87
test/intl402/DateTimeFormat/prototype/resolvedOptions/resolved-locale-with-hc-unicode.js
vendored
Normal file
|
@ -0,0 +1,87 @@
|
|||
// Copyright 2018 André Bargull. All rights reserved.
|
||||
// This code is governed by the license found in the LICENSE file.
|
||||
|
||||
/*---
|
||||
esid: sec-Intl.DateTimeFormat.prototype.resolvedOptions
|
||||
description: >
|
||||
The resolved locale doesn't include a hc Unicode extension value if the
|
||||
hour12 or hourCycle option is also present.
|
||||
info: |
|
||||
12.1.1 InitializeDateTimeFormat(dateTimeFormat, locales, options)
|
||||
...
|
||||
6. Let hour12 be ? GetOption(options, "hour12", "boolean", undefined, undefined).
|
||||
7. Let hourCycle be ? GetOption(options, "hourCycle", "string", « "h11", "h12", "h23", "h24" », undefined).
|
||||
8. If hour12 is not undefined, then
|
||||
a. Let hourCycle be null.
|
||||
9. Set opt.[[hc]] to hourCycle.
|
||||
...
|
||||
|
||||
9.2.6 ResolveLocale(availableLocales, requestedLocales, options, relevantExtensionKeys, localeData)
|
||||
...
|
||||
8. For each element key of relevantExtensionKeys in List order, do
|
||||
...
|
||||
i. If options has a field [[<key>]], then
|
||||
i. Let optionsValue be options.[[<key>]].
|
||||
ii. Assert: Type(optionsValue) is either String, Undefined, or Null.
|
||||
iii. If keyLocaleData contains optionsValue, then
|
||||
1. If SameValue(optionsValue, value) is false, then
|
||||
a. Let value be optionsValue.
|
||||
b. Let supportedExtensionAddition be "".
|
||||
...
|
||||
---*/
|
||||
|
||||
var defaultLocale = new Intl.DateTimeFormat().resolvedOptions().locale;
|
||||
var defaultLocaleWithHourCycle = defaultLocale + "-u-hc-h11";
|
||||
|
||||
function assertLocale(locale, expectedLocale, options, message) {
|
||||
var resolved = new Intl.DateTimeFormat(locale, {
|
||||
hour: "2-digit",
|
||||
hour12: options.hour12,
|
||||
hourCycle: options.hourCycle,
|
||||
}).resolvedOptions();
|
||||
assert.sameValue(resolved.locale, expectedLocale, message + " (With hour option.)");
|
||||
|
||||
// Also test the case when no hour option is present at all.
|
||||
// The resolved options don't include hour12 and hourCycle if the date-time
|
||||
// formatter doesn't include an hour option. This restriction doesn't apply
|
||||
// to the hc Unicode extension value.
|
||||
resolved = new Intl.DateTimeFormat(locale, {
|
||||
hour12: options.hour12,
|
||||
hourCycle: options.hourCycle,
|
||||
}).resolvedOptions();
|
||||
assert.sameValue(resolved.locale, expectedLocale, message + " (Without hour option.)");
|
||||
}
|
||||
|
||||
assertLocale(defaultLocaleWithHourCycle, defaultLocale, {
|
||||
hour12: false,
|
||||
hourCycle: "h23",
|
||||
}, "hour12 and hourCycle options and hc Unicode extension value are present.");
|
||||
|
||||
assertLocale(defaultLocaleWithHourCycle, defaultLocale, {
|
||||
hour12: false,
|
||||
}, "hour12 option and hc Unicode extension value are present.");
|
||||
|
||||
assertLocale(defaultLocaleWithHourCycle, defaultLocale, {
|
||||
hourCycle: "h23",
|
||||
}, "hourCycle option and hc Unicode extension value are present.");
|
||||
|
||||
assertLocale(defaultLocaleWithHourCycle, defaultLocaleWithHourCycle, {
|
||||
}, "Only hc Unicode extension value is present.");
|
||||
|
||||
// And make sure the hc Unicode extension doesn't get added if it's not present
|
||||
// in the requested locale.
|
||||
assertLocale(defaultLocale, defaultLocale, {
|
||||
hour12: false,
|
||||
hourCycle: "h23",
|
||||
}, "hour12 and hourCycle options are present, but no hc Unicode extension value.");
|
||||
|
||||
assertLocale(defaultLocale, defaultLocale, {
|
||||
hour12: false,
|
||||
}, "hourCycle option is present, but no hc Unicode extension value.");
|
||||
|
||||
assertLocale(defaultLocale, defaultLocale, {
|
||||
hourCycle: "h23",
|
||||
}, "hourCycle option is present, but no hc Unicode extension value.");
|
||||
|
||||
assertLocale(defaultLocale, defaultLocale, {
|
||||
}, "No options are present and no hc Unicode extension value.");
|
Loading…
Reference in New Issue