Skip to content

Commit

Permalink
Added tests to verify that use of "long", "short", or "narrow" styles…
Browse files Browse the repository at this point in the history
… for units following units using "numeric" or "2-digit" styles throws
  • Loading branch information
ben-allen authored and Ms2ger committed Jan 10, 2024
1 parent 67a5153 commit 80590ce
Showing 1 changed file with 43 additions and 0 deletions.
43 changes: 43 additions & 0 deletions test/intl402/DurationFormat/constructor-options-style-conflict.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,43 @@
// Copyright 2023 Igalia, S.L. All rights reserved.
// This code is governed by the BSD license found in the LICENSE file.

/*---
esid: sec-isvaliddurationrecord
description: Checks that the "long", "short", and "narrow" styles can't be used for units following a unit using the "numeric" or "2-digit" style.
info: |
GetDurationUnitOptions (unit, options, baseStyle, stylesList, digitalBase, prevStyle)
(...)
6. If prevStyle is "numeric" or "2-digit", then
a. If style is not "numeric" or "2-digit", then
i. Throw a RangeError exception.
features: [Intl.DurationFormat]
---*/

let invalidOptions = {};
for (const timeUnit of ["hours", "minutes", "seconds", "milliseconds", "microseconds", "nanoseconds"]){
invalidOptions[timeUnit] = "numeric";
}

for (const timeUnit of ["minutes", "seconds", "milliseconds", "microseconds", "nanoseconds"]){
for (const invalidStyle of ["long", "short", "narrow"]){
invalidOptions[timeUnit] = invalidStyle;
assert.throws(RangeError, function() {
new Intl.DurationFormat([], invalidOptions);
}, `${invalidStyle} is an invalid style option value when following a unit with \"numeric\" style`);
}
invalidOptions[timeUnit] = "numeric";
}

for (const timeUnit of ["hours", "minutes", "seconds"]){
invalidOptions[timeUnit] = "2-digit";
}

for (const timeUnit of ["minutes", "seconds", "milliseconds"]){
for (const invalidStyle of ["long", "short", "narrow"]){
invalidOptions[timeUnit] = invalidStyle;
assert.throws(RangeError, function() {
new Intl.DurationFormat([], invalidOptions);
}, `${invalidStyle} is an invalid style option value when following a unit with \"2-digit\" style`);
}
invalidOptions[timeUnit] = "2-digit";
}

0 comments on commit 80590ce

Please sign in to comment.