c0f90e5923
Add "calendar", and "dateTimeField" Add option for languageDisplay https://tc39.es/intl-displaynames-v2/ https://chromestatus.com/feature/5082027281874944 Design Doc: https://docs.google.com/document/d/17hQz4nOC7PJYhxc_MU-BRoT6BnYGZv66XlU1iGX0ywQ/edit# Bug: v8:11637 Change-Id: Ie7dc80d16956f0e668b11e600e47f5bafb081ff7 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2924523 Commit-Queue: Frank Tang <ftang@chromium.org> Reviewed-by: Jakob Kummerow <jkummerow@chromium.org> Cr-Commit-Position: refs/heads/master@{#75027}
59 lines
2.2 KiB
JavaScript
59 lines
2.2 KiB
JavaScript
// Copyright 2021 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.
|
|
|
|
// Flags: --harmony_intl_displaynames_v2
|
|
|
|
let displayNames = new Intl.DisplayNames(undefined, {type: 'language'});
|
|
// The default languageDisplay is 'dialect' if type is 'language'
|
|
assertEquals('dialect', displayNames.resolvedOptions().languageDisplay);
|
|
|
|
['region', 'script', 'calendar', 'dateTimeField', 'currency'].forEach(
|
|
function(type) {
|
|
let dn = new Intl.DisplayNames(undefined, {type});
|
|
assertEquals(undefined, dn.resolvedOptions().languageDisplay);
|
|
});
|
|
|
|
const styles = ["long", "short", "narrow"];
|
|
const types = ["calendar", "dateTimeField"];
|
|
const fallbacks = ["code", "none"];
|
|
|
|
styles.forEach(function(style) {
|
|
types.forEach(function(type) {
|
|
assertEquals(style,
|
|
(new Intl.DisplayNames(['sr'], {style, type})).resolvedOptions().style);
|
|
assertEquals(type,
|
|
(new Intl.DisplayNames(['sr'], {style, type})).resolvedOptions().type);
|
|
assertEquals(fallbacks[0],
|
|
(new Intl.DisplayNames(
|
|
['sr'], {style, type})).resolvedOptions().fallback);
|
|
fallbacks.forEach(function(fallback) {
|
|
assertEquals(style,
|
|
(new Intl.DisplayNames(
|
|
['sr'], {style, type, fallback})).resolvedOptions().style);
|
|
assertEquals(type,
|
|
(new Intl.DisplayNames(
|
|
['sr'], {style, type, fallback})).resolvedOptions().type);
|
|
assertEquals(fallback,
|
|
(new Intl.DisplayNames(
|
|
['sr'], {style, type, fallback})).resolvedOptions().fallback);
|
|
});
|
|
});
|
|
});
|
|
|
|
const languageDisplays = ["dialect", "standard"];
|
|
styles.forEach(function(style) {
|
|
let type = 'language';
|
|
languageDisplays.forEach(function(languageDisplay) {
|
|
assertEquals(style,
|
|
(new Intl.DisplayNames(['sr'], {style, type, languageDisplay}))
|
|
.resolvedOptions().style);
|
|
assertEquals(type,
|
|
(new Intl.DisplayNames(['sr'], {style, type, languageDisplay}))
|
|
.resolvedOptions().type);
|
|
assertEquals(languageDisplay,
|
|
(new Intl.DisplayNames(['sr'], {style, type, languageDisplay}))
|
|
.resolvedOptions().languageDisplay);
|
|
});
|
|
});
|