// 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.

// 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;
    }
  }
});