fixes to nuon for inf, -inf, and NaN (#5818)

This commit is contained in:
pwygab 2022-06-18 02:01:37 +08:00 committed by GitHub
parent a17d46f200
commit 28c21121cf
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
2 changed files with 41 additions and 1 deletions

View file

@ -87,7 +87,11 @@ fn value_to_string(v: &Value, span: Span) -> Result<String, ShellError> {
)),
Value::Filesize { val, .. } => Ok(format!("{}b", *val)),
Value::Float { val, .. } => {
if &val.round() == val {
if &val.round() == val
&& val != &f64::NAN
&& val != &f64::INFINITY
&& val != &f64::NEG_INFINITY
{
Ok(format!("{}.0", *val))
} else {
Ok(format!("{}", *val))

View file

@ -202,3 +202,39 @@ fn float_doesnt_become_int() {
assert_eq!(actual.out, "1.0")
}
#[test]
fn float_inf_parsed_properly() {
let actual = nu!(
cwd: "tests/fixtures/formats", pipeline(
r#"
inf | to nuon
"#
));
assert_eq!(actual.out, "inf")
}
#[test]
fn float_neg_inf_parsed_properly() {
let actual = nu!(
cwd: "tests/fixtures/formats", pipeline(
r#"
-inf | to nuon
"#
));
assert_eq!(actual.out, "-inf")
}
#[test]
fn float_nan_parsed_properly() {
let actual = nu!(
cwd: "tests/fixtures/formats", pipeline(
r#"
NaN | to nuon
"#
));
assert_eq!(actual.out, "NaN")
}