From 6e558e9e0973898cbad1b785478417395fde306c Mon Sep 17 00:00:00 2001 From: Frank Tang Date: Fri, 31 May 2019 10:31:46 -0700 Subject: [PATCH] [Intl] Add test cases for %%ALIAS locales Bug: v8:9312, chromium:968269 Change-Id: I0e3d134cd4341c30277df62fead6386e344be0bf Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1636179 Commit-Queue: Frank Tang Reviewed-by: Mathias Bynens Cr-Commit-Position: refs/heads/master@{#61952} --- test/intl/intl.status | 3 +++ test/intl/regress-9312.js | 32 ++++++++++++++++++++++++++++++++ 2 files changed, 35 insertions(+) create mode 100644 test/intl/regress-9312.js diff --git a/test/intl/intl.status b/test/intl/intl.status index 81950f13b9..ba54743d67 100644 --- a/test/intl/intl.status +++ b/test/intl/intl.status @@ -34,6 +34,9 @@ 'collator/check-kf-option': [FAIL], 'collator/check-kn-option': [FAIL], + # https://code.google.com/p/v8/issues/detail?id=9312 + 'regress-9312': [FAIL], + # Slow tests. 'regress-903566': [PASS, SLOW], }], # ALWAYS diff --git a/test/intl/regress-9312.js b/test/intl/regress-9312.js new file mode 100644 index 0000000000..7bcd241001 --- /dev/null +++ b/test/intl/regress-9312.js @@ -0,0 +1,32 @@ +// Copyright 2019 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. + +// Test the locales in src/third_party/icu/source/data/locales/ which +// has %%ALIAS output the same as what it alias to instead of root. +const aliases = new Map([ + ['sh', 'sr-Latn'], + ['in', 'id'], + ['mo', 'ro'], + ['iw', 'he'], + ['no', 'nb'], + ['tl', 'fil'], + ['iw-IL', 'he-IL'], + ['sr-CS', 'sr-Cyrl-RS'], +]); + +const date = new Date(); +const number = 123456789.123456789; +for (const [from, to] of aliases) { + const fromDTF = new Intl.DateTimeFormat(from, {month: 'long', weekday: 'long'}); + const toDTF = new Intl.DateTimeFormat(to, {month: 'long', weekday: 'long'}); + for (let m = 0; m < 12; m++) { + date.setMonth(m); + assertEquals(fromDTF.format(date), toDTF.format(date), + `Expected to see the same output from "${from}" and "${to}".`); + } + const fromNF = new Intl.NumberFormat(from); + const toNF = new Intl.NumberFormat(to); + assertEquals(fromNF.format(number), toNF.format(number), + `Expected to see the same output from "${from}" and "${to}".`); +}