diff --git a/src/uucore/src/lib/features/format/num_format.rs b/src/uucore/src/lib/features/format/num_format.rs index fac733a22..b0dd1b945 100644 --- a/src/uucore/src/lib/features/format/num_format.rs +++ b/src/uucore/src/lib/features/format/num_format.rs @@ -324,8 +324,9 @@ fn get_sign_indicator(sign: PositiveSign, x: &T) -> Str fn format_float_non_finite(f: f64, case: Case) -> String { debug_assert!(!f.is_finite()); let mut s = format!("{f}"); - if case == Case::Uppercase { - s.make_ascii_uppercase(); + match case { + Case::Lowercase => s.make_ascii_lowercase(), // Forces NaN back to nan. + Case::Uppercase => s.make_ascii_uppercase(), } s } @@ -550,6 +551,18 @@ mod test { assert_eq!(f(8), "010"); } + #[test] + fn non_finite_float() { + use super::format_float_non_finite; + let f = |x| format_float_non_finite(x, Case::Lowercase); + assert_eq!(f(f64::NAN), "nan"); + assert_eq!(f(f64::INFINITY), "inf"); + + let f = |x| format_float_non_finite(x, Case::Uppercase); + assert_eq!(f(f64::NAN), "NAN"); + assert_eq!(f(f64::INFINITY), "INF"); + } + #[test] fn decimal_float() { use super::format_float_decimal;