// 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 }); }); } reportCompare(0, 0);