Intl: Test calendar canonicalization in Intl.DateTimeFormat constructor

This ECMA-402 change is already from several years ago, but lacked test
coverage: https://github.com/tc39/ecma402/pull/418
This commit is contained in:
Philip Chimento 2024-07-03 03:51:18 +03:00 committed by Ms2ger
parent a82f5382ff
commit 31a20380b0
1 changed files with 23 additions and 0 deletions

View File

@ -0,0 +1,23 @@
// Copyright (C) 2024 Igalia, S.L. All rights reserved.
// This code is governed by the BSD license found in the LICENSE file.
/*---
esid: sec-intl.datetimeformat
description: Calendar IDs are canonicalized
locale: [en, en-u-ca-islamic-civil]
---*/
const fmt1 = new Intl.DateTimeFormat("en", { calendar: "islamicc" });
assert.sameValue(fmt1.resolvedOptions().calendar, "islamic-civil", "calendar ID is canonicalized (option)");
const fmt2 = new Intl.DateTimeFormat("en-u-ca-islamicc");
assert.sameValue(fmt1.resolvedOptions().calendar, "islamic-civil", "calendar ID is canonicalized (locale key)");
const fmt3 = new Intl.DateTimeFormat("en", { calendar: "ISO8601" });
assert.sameValue(fmt3.resolvedOptions().calendar, "iso8601", "calendar ID is lowercased");
assert.throws(
RangeError,
() => new Intl.DateTimeFormat("en", { calendar: "\u0130SO8601" }),
"calendar ID is capital dotted I is not lowercased (first argument)"
);