From 392c48002cc966e80ab018d49b3969bcf5c5756b Mon Sep 17 00:00:00 2001 From: Daniel Hofstetter Date: Sun, 22 Dec 2024 14:53:37 +0100 Subject: [PATCH] cut: don't merge adjacent ranges --- src/uucore/src/lib/features/ranges.rs | 11 ++++------- tests/by-util/test_cut.rs | 2 -- 2 files changed, 4 insertions(+), 9 deletions(-) diff --git a/src/uucore/src/lib/features/ranges.rs b/src/uucore/src/lib/features/ranges.rs index 222be7ca3..88851b9aa 100644 --- a/src/uucore/src/lib/features/ranges.rs +++ b/src/uucore/src/lib/features/ranges.rs @@ -91,7 +91,7 @@ impl Range { Ok(Self::merge(ranges)) } - /// Merge any overlapping ranges + /// Merge any overlapping ranges. Adjacent ranges are *NOT* merged. /// /// Is guaranteed to return only disjoint ranges in a sorted order. fn merge(mut ranges: Vec) -> Vec { @@ -101,10 +101,7 @@ impl Range { for i in 0..ranges.len() { let j = i + 1; - // The +1 is a small optimization, because we can merge adjacent Ranges. - // For example (1,3) and (4,6), because in the integers, there are no - // possible values between 3 and 4, this is equivalent to (1,6). - while j < ranges.len() && ranges[j].low <= ranges[i].high + 1 { + while j < ranges.len() && ranges[j].low <= ranges[i].high { let j_high = ranges.remove(j).high; ranges[i].high = max(ranges[i].high, j_high); } @@ -216,8 +213,8 @@ mod test { &[r(10, 40), r(50, 60)], ); - // Merge adjacent ranges - m(vec![r(1, 3), r(4, 6)], &[r(1, 6)]); + // Don't merge adjacent ranges + m(vec![r(1, 3), r(4, 6)], &[r(1, 3), r(4, 6)]); } #[test] diff --git a/tests/by-util/test_cut.rs b/tests/by-util/test_cut.rs index c9a932a67..1aa3c126a 100644 --- a/tests/by-util/test_cut.rs +++ b/tests/by-util/test_cut.rs @@ -350,7 +350,6 @@ fn test_newline_preservation_with_f1_option() { ucmd.args(&["-f1-", "1"]).succeeds().stdout_is(expected); } -#[ignore = "Not yet implemented"] #[test] fn test_output_delimiter_with_character_ranges() { new_ucmd!() @@ -360,7 +359,6 @@ fn test_output_delimiter_with_character_ranges() { .stdout_only("bc:defg\n"); } -#[ignore = "Not yet implemented"] #[test] fn test_output_delimiter_with_adjacent_ranges() { new_ucmd!()