fix nuon conversions of range values (#14687)

# Description
Currently the step size of range values are discarded when converting to
nuon. This PR fixes that and makes `to nuon | from nuon` round trips
work.

# User-Facing Changes
`to nuon` conversion of `range` values now include the step size

# Tests + Formatting
Added some additional tests to cover inclusive/exclusive integer/float
and step size cases.
This commit is contained in:
Bahex
2025-01-07 23:29:39 +03:00
committed by GitHub
parent 8e41a308cd
commit 16e174be7e
5 changed files with 82 additions and 73 deletions

View File

@ -179,27 +179,56 @@ fn to_nuon_records() {
#[test]
fn to_nuon_range() {
let actual = nu!(pipeline(
r#"
1..42
| to nuon
"#
));
let actual = nu!(r#"1..42 | to nuon"#);
assert_eq!(actual.out, "1..42");
let actual = nu!(r#"1..<42 | to nuon"#);
assert_eq!(actual.out, "1..<42");
let actual = nu!(r#"1..4..42 | to nuon"#);
assert_eq!(actual.out, "1..4..42");
let actual = nu!(r#"1..4..<42 | to nuon"#);
assert_eq!(actual.out, "1..4..<42");
let actual = nu!(r#"1.0..42.0 | to nuon"#);
assert_eq!(actual.out, "1.0..42.0");
let actual = nu!(r#"1.0..<42.0 | to nuon"#);
assert_eq!(actual.out, "1.0..<42.0");
let actual = nu!(r#"1.0..4.0..42.0 | to nuon"#);
assert_eq!(actual.out, "1.0..4.0..42.0");
let actual = nu!(r#"1.0..4.0..<42.0 | to nuon"#);
assert_eq!(actual.out, "1.0..4.0..<42.0");
}
#[test]
fn from_nuon_range() {
let actual = nu!(pipeline(
r#"
"1..42"
| from nuon
| describe
"#
));
let actual = nu!(r#"'1..42' | from nuon | to nuon"#);
assert_eq!(actual.out, "1..42");
assert_eq!(actual.out, "range");
let actual = nu!(r#"'1..<42' | from nuon | to nuon"#);
assert_eq!(actual.out, "1..<42");
let actual = nu!(r#"'1..4..42' | from nuon | to nuon"#);
assert_eq!(actual.out, "1..4..42");
let actual = nu!(r#"'1..4..<42' | from nuon | to nuon"#);
assert_eq!(actual.out, "1..4..<42");
let actual = nu!(r#"'1.0..42.0' | from nuon | to nuon"#);
assert_eq!(actual.out, "1.0..42.0");
let actual = nu!(r#"'1.0..<42.0' | from nuon | to nuon"#);
assert_eq!(actual.out, "1.0..<42.0");
let actual = nu!(r#"'1.0..4.0..42.0' | from nuon | to nuon"#);
assert_eq!(actual.out, "1.0..4.0..42.0");
let actual = nu!(r#"'1.0..4.0..<42.0' | from nuon | to nuon"#);
assert_eq!(actual.out, "1.0..4.0..<42.0");
}
#[test]