v8/test/intl/regress-9788.js
Frank Tang 246d985cb7 [Intl] No throwing RangeError when "calendar" and "numberingSystem" are well-formed
* Throws RangeError only when the calendar and numberingSystem is
  ill-formed.
* Set the calendar and numberingSystem to the locale only if
the values are valid.
* Fix the order of GetOption of "localeMatcher".
* Add more unit tests.
See https://github.com/tc39/ecma402/pull/175 for details.

Bug: v8:9786, v8:9787, v8:9788
Change-Id: Ic0f918ad7d9afb0b7c8df39caa0f44ef07ca10c0
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1830345
Commit-Queue: Frank Tang <ftang@chromium.org>
Reviewed-by: Jakob Kummerow <jkummerow@chromium.org>
Cr-Commit-Position: refs/heads/master@{#64070}
2019-10-01 18:04:12 +00:00

30 lines
893 B
JavaScript

// 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.
// Flags: --harmony-intl-add-calendar-numbering-system
// Well-formed but invalid numberingSystem should not throw RangeError.
var numberingSystem = "abc";
var len = 3;
const intlClasses = [
Intl.DateTimeFormat,
Intl.NumberFormat,
Intl.RelativeTimeFormat
];
intlClasses.forEach(function(cls) {
var expected = new cls("en").resolvedOptions().numberingSystem;
var obj;
for (var i = 3; i < 20; i++, len++, numberingSystem += "a") {
assertDoesNotThrow(() => obj = new cls("en", {numberingSystem}),
"Well-formed numberingSystem should not throw");
assertEquals(expected, obj.resolvedOptions().numberingSystem);
if (len == 8) {
numberingSystem += "-ab";
len = 2;
}
}
});