mirror of
https://github.com/nushell/nushell.git
synced 2025-08-19 04:36:11 +02:00
Implement exclusive and inclusive ranges with ..< and .. (#2541)
* Implement exclusive and inclusive ranges with .. and ..= This commit adds right-exclusive ranges. The original a..b inclusive syntax was changed to reflect the Rust notation. New a..=b syntax was introduced to have the old behavior. Currently, both a.. and b..= is valid, and it is unclear whether it's valid to impose restrictions. The original issue suggests .. for inclusive and ..< for exclusive ranges, this can be implemented by making simple changes to this commit. * Fix collect tests by changing ranges to ..= * Fix clippy lints in exclusive range matching * Implement exclusive ranges using `..<`
This commit is contained in:
@@ -418,6 +418,18 @@ fn echoing_ranges() {
|
||||
assert_eq!(actual.out, "6");
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn echoing_exclusive_ranges() {
|
||||
let actual = nu!(
|
||||
cwd: ".",
|
||||
r#"
|
||||
echo 1..<4 | math sum
|
||||
"#
|
||||
);
|
||||
|
||||
assert_eq!(actual.out, "6");
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn table_literals1() {
|
||||
let actual = nu!(
|
||||
@@ -490,6 +502,18 @@ fn range_with_open_left() {
|
||||
assert_eq!(actual.out, "465");
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn exclusive_range_with_open_left() {
|
||||
let actual = nu!(
|
||||
cwd: ".",
|
||||
r#"
|
||||
echo ..<31 | math sum
|
||||
"#
|
||||
);
|
||||
|
||||
assert_eq!(actual.out, "465");
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn range_with_open_right() {
|
||||
let actual = nu!(
|
||||
@@ -502,6 +526,18 @@ fn range_with_open_right() {
|
||||
assert_eq!(actual.out, "95");
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn exclusive_range_with_open_right() {
|
||||
let actual = nu!(
|
||||
cwd: ".",
|
||||
r#"
|
||||
echo 5..< | first 10 | math sum
|
||||
"#
|
||||
);
|
||||
|
||||
assert_eq!(actual.out, "95");
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn range_with_mixed_types() {
|
||||
let actual = nu!(
|
||||
@@ -514,6 +550,18 @@ fn range_with_mixed_types() {
|
||||
assert_eq!(actual.out, "55");
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn exclusive_range_with_mixed_types() {
|
||||
let actual = nu!(
|
||||
cwd: ".",
|
||||
r#"
|
||||
echo 1..<10.5 | math sum
|
||||
"#
|
||||
);
|
||||
|
||||
assert_eq!(actual.out, "55");
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn it_expansion_of_tables() {
|
||||
let actual = nu!(
|
||||
|
Reference in New Issue
Block a user