Files
sousa-gecko/testing/web-platform/tests/ecmascript/locale-compat.html
T
Sam Sneddon 73327b5e22 Bug 1955481 [wpt PR 51506] - Use local time and provide subtest name for sv-SE locale test, a=testonly
Automatic update from web-platform-tests
Use local time and provide subtest name for sv-SE locale test (#51506)

Using `format(0)` is the same as `format(Date(0))`, which creates a
Date object which is at the epoch. However, because we output it with
no regard from the time zone, this will fail if you're in a time zone
behind UTC.

To avoid this, we move to just using local time, matching the other
tests in this file, thus guaranteeing this test passes everywhere.

Also, we may as well check the exact string, because "1970" is the
least interesting part of this test.
--

wpt-commits: 5f20786a60df884d1f20e694cf4b029d8e858775
wpt-pr: 51506
2025-03-23 08:13:37 +00:00

54 lines
2.2 KiB
HTML

<!DOCTYPE html>
<meta charset="utf-8">
<!--
Copyright (C) 2023 the V8 project authors. All rights reserved.
This code is governed by the BSD license found in the LICENSE file.
-->
<title>Web Compatibility requirements for implementation-defined locale-specific JavaScript APIs</title>
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
<script>
test(t => { // https://bugs.chromium.org/p/chromium/issues/detail?id=1414292
const date = new Date('2022-12-31T23:59:42');
const localeString = date.toLocaleString('en-US');
// No U+202F NARROW NO-BREAK SPACE must be present.
assert_false(localeString.includes('\u202F'));
// The character between the time and AM/PM should be U+0020 SPACE.
assert_regexp_match(localeString, /:\d\d:\d\d\x20[AP]M/);
}, '`Date.prototype.toLocaleString` produces U+0020 instead of U+202F for `en-US` locale');
test(t => { // https://bugs.chromium.org/p/chromium/issues/detail?id=1414292
const date = new Date('2022-12-31T23:59:42');
const formatter = new Intl.DateTimeFormat('en', {timeStyle: 'long'})
const formattedString = formatter.format(date);
// No U+202F NARROW NO-BREAK SPACE must be present.
assert_false(formattedString.includes('\u202F'));
// The character between the time and AM/PM should be U+0020 SPACE.
assert_regexp_match(formattedString, /:\d\d:\d\d\x20[AP]M/);
}, '`Intl.DateTimeFormat.prototype.format` produces U+0020 instead of U+202F for `en` locale');
test(t => { // https://bugs.chromium.org/p/chromium/issues/detail?id=1418727
const date = new Date('2022-03-31T23:59:42');
assert_true(date.toLocaleString('en-CA').includes('2022-03-31'));
assert_equals(date.toLocaleString('en-CA', {dateStyle: 'short'}), '2022-03-31');
}, '`Date.prototype.toLocaleString` produces `yyyy-mm-dd` instead of `m/d/yyyy` for `en-CA` locale');
test(t => { // https://bugzilla.mozilla.org/show_bug.cgi?id=1864612
const date = new Date('1970-01-01T00:00:00');
const formatter = new Intl.DateTimeFormat('sv-SE')
assert_equals(formatter.format(date), '1970-01-01');
}, '`Intl.DateTimeFormat.prototype.format` produces `yyyy-mm-dd` instead of `yyyy-m-d` for `sv-SE` locale');
</script>