text: // Copyright 2019 Igalia, S.L. All rights reserved.
  // This code is governed by the BSD license found in the LICENSE file.
  
  /*---
  esid: sec-initializenumberformat
  description: Checks handling of the compactDisplay option to the NumberFormat constructor.
  info: |
      InitializeNumberFormat ( numberFormat, locales, options )
  
      23. Let signDisplay be ? GetOption(options, "signDisplay", "string", « "auto", "never", "always", "exceptZero" », "auto").
      24. Set numberFormat.[[SignDisplay]] to signDisplay.
  
  features: [Intl.NumberFormat-unified]
  ---*/
  
  const values = [
    [undefined, "short"],
    ["short"],
    ["narrow"],
    ["long"],
  ];
  
  for (const [value, expected = value] of values) {
    const nf = new Intl.NumberFormat([], {
      style: "unit",
      unitDisplay: value,
      unit: "hour",
    });
    const resolvedOptions = nf.resolvedOptions();
    assert.sameValue("unitDisplay" in resolvedOptions, true);
    assert.sameValue(resolvedOptions.unitDisplay, expected);
  }
  
  for (const [value, expected = value] of values) {
    const nf = new Intl.NumberFormat([], {
      style: "unit",
      unitDisplay: value,
      unit: "percent",
    });
    const resolvedOptions = nf.resolvedOptions();
    assert.sameValue("unitDisplay" in resolvedOptions, true);
    assert.sameValue(resolvedOptions.unitDisplay, expected);
  }
  
  for (const [value] of values) {
    const nf = new Intl.NumberFormat([], {
      style: "percent",
      unitDisplay: value,
    });
    const resolvedOptions = nf.resolvedOptions();
    assert.sameValue("unitDisplay" in resolvedOptions, false);
    assert.sameValue(resolvedOptions.unitDisplay, undefined);
  }
  
  const invalidValues = [
    "",
    "Short",
    "s",
    "\u017Fhort",
  ];
  
  for (const unitDisplay of invalidValues) {
    assert.throws(RangeError, () => {
      new Intl.NumberFormat([], { unitDisplay });
    });
  }
  