Source code

Revision control

Copy as Markdown

Other Tools

// |reftest| skip -- Intl.Locale-info is not supported
// Copyright 2023 Google Inc. All rights reserved.
// This code is governed by the BSD license found in the LICENSE file.
/*---
esid: sec-intl.locale
description: >
Checks valid cases for the options argument to the Locale constructor.
info: |
Intl.Locale( tag [, options] )
...
x. Let numberingSystem be ? GetOption(options, "firstDayOfWeek", "string", < *"mon"*, *"tue"*, *"wed"*, *"thu"*, *"fri"*, *"sat"*, *"sun"*, *"0"*, *"1"*, *"2"*, *"3"*, *"4"*, *"5"*, *"6"*, *"7"*> , undefined).
x. Let firstDay be *undefined*.
x. If fw is not *undefined*, then
x. Set firstDay to !WeekdayToString(fw).
x. Set opt.[[fw]] to firstDay.
...
x. Let r be ! ApplyUnicodeExtensionToTag(tag, opt, relevantExtensionKeys).
...
x. Let firstDay be *undefined*.
x. If r.[[fw]] is not *undefined*, then
x. Set firstDay to ! WeekdayToNumber(r.[[fw]]).
x. Set locale.[[FirstDayOfWeek]] to firstDay.
...
features: [Intl.Locale,Intl.Locale-info]
---*/
const validFirstDayOfWeekOptions = [
["mon", "en-u-fw-mon"],
["tue", "en-u-fw-tue"],
["wed", "en-u-fw-wed"],
["thu", "en-u-fw-thu"],
["fri", "en-u-fw-fri"],
["sat", "en-u-fw-sat"],
["sun", "en-u-fw-sun"],
["1", "en-u-fw-mon"],
["2", "en-u-fw-tue"],
["3", "en-u-fw-wed"],
["4", "en-u-fw-thu"],
["5", "en-u-fw-fri"],
["6", "en-u-fw-sat"],
["7", "en-u-fw-sun"],
["0", "en-u-fw-sun"],
[1, "en-u-fw-mon"],
[2, "en-u-fw-tue"],
[3, "en-u-fw-wed"],
[4, "en-u-fw-thu"],
[5, "en-u-fw-fri"],
[6, "en-u-fw-sat"],
[7, "en-u-fw-sun"],
[0, "en-u-fw-sun"],
];
for (const [firstDayOfWeek, expected] of validFirstDayOfWeekOptions) {
assert.sameValue(
new Intl.Locale('en', { firstDayOfWeek }).toString(),
expected,
`new Intl.Locale("en", { firstDayOfWeek: ${firstDayOfWeek} }).toString() returns "${expected}"`
);
assert.sameValue(
new Intl.Locale('en-u-fw-WED', { firstDayOfWeek }).toString(),
expected,
`new Intl.Locale("en-u-fw-WED", { firstDayOfWeek: ${firstDayOfWeek} }).toString() returns "${expected}"`
);
}
reportCompare(0, 0);