From 7be8c24a5b084329473b565aa68b21ff44e297dd Mon Sep 17 00:00:00 2001 From: Kartavya Vashishtha Date: Thu, 22 Aug 2024 08:17:48 -0400 Subject: [PATCH] fix: GetNumberOption throws a RangeError --- components/experimental/src/duration/options.rs | 2 +- .../experimental/src/duration/validated_options.rs | 14 +++++++++----- 2 files changed, 10 insertions(+), 6 deletions(-) diff --git a/components/experimental/src/duration/options.rs b/components/experimental/src/duration/options.rs index 57d80716850..021280543c9 100644 --- a/components/experimental/src/duration/options.rs +++ b/components/experimental/src/duration/options.rs @@ -68,7 +68,7 @@ pub enum FractionalDigits { #[default] ShowAll, /// Use the given number of fractional digits. - /// Default [`FractionalDigits::ShowAll`] behavior is used if this value is out of the range 0..=9. + /// This value must be in the range 0..=9. /// Fractional digits are rounded to zero if necessary. Fixed(u8), } diff --git a/components/experimental/src/duration/validated_options.rs b/components/experimental/src/duration/validated_options.rs index 93b3e085982..be40c8dbc51 100644 --- a/components/experimental/src/duration/validated_options.rs +++ b/components/experimental/src/duration/validated_options.rs @@ -72,6 +72,9 @@ pub enum DurationFormatterOptionsError { /// Returned when a previous unit's style is set to [`FieldStyle::Numeric`] or [`FieldStyle::TwoDigit`] and the following unit's style is not /// [`FieldStyle::Fractional`], [`FieldStyle::Numeric`], or [`FieldStyle::TwoDigit`]. PreviousNumeric, + + /// Returned when the number of fractional digits is out of acceptable range. See [`FractionalDigits::Fixed`]. + FractionalDigitsOutOfRange, } impl ValidatedDurationFormatterOptions { @@ -191,7 +194,7 @@ impl ValidatedDurationFormatterOptions { // 27. Set durationFormat.[[FractionalDigits]] to ? GetNumberOption(options, "fractionalDigits", 0, 9, undefined). if let FractionalDigits::Fixed(i) = builder.fractional_digits { if i > 9 { - builder.fractional_digits = FractionalDigits::ShowAll; + return Err(DurationFormatterOptionsError::FractionalDigitsOutOfRange); } } @@ -430,14 +433,15 @@ mod tests { use super::*; #[test] - fn test_fractional_digit_clamp() { + fn test_fractional_digit_error() { let options = DurationFormatterOptions { fractional_digits: FractionalDigits::Fixed(10), ..Default::default() }; - let validated = ValidatedDurationFormatterOptions::validate(options).unwrap(); - - assert_eq!(validated.fractional_digits, FractionalDigits::ShowAll); + assert_eq!( + ValidatedDurationFormatterOptions::validate(options), + Err(DurationFormatterOptionsError::FractionalDigitsOutOfRange) + ); } }