mirror of
https://github.com/uutils/coreutils
synced 2024-12-14 07:12:44 +00:00
sort: add tests for stable and unstable sort
This commit is contained in:
parent
b42a5b8741
commit
844cbdc5a4
2 changed files with 22 additions and 5 deletions
|
@ -106,7 +106,7 @@ pub fn version_cmp(mut a: &str, mut b: &str) -> Ordering {
|
|||
// 1. Compare leading non-numerical part
|
||||
// 2. Compare leading numerical part
|
||||
// 3. Repeat
|
||||
loop {
|
||||
while !a.is_empty() || !b.is_empty() {
|
||||
let a_numerical_start = a.find(|c: char| c.is_ascii_digit()).unwrap_or(a.len());
|
||||
let b_numerical_start = b.find(|c: char| c.is_ascii_digit()).unwrap_or(b.len());
|
||||
|
||||
|
@ -139,11 +139,9 @@ pub fn version_cmp(mut a: &str, mut b: &str) -> Ordering {
|
|||
|
||||
a = &a[a_numerical_end..];
|
||||
b = &b[b_numerical_end..];
|
||||
}
|
||||
|
||||
if a.is_empty() && b.is_empty() {
|
||||
return std::cmp::Ordering::Equal;
|
||||
}
|
||||
}
|
||||
Ordering::Equal
|
||||
}
|
||||
|
||||
#[cfg(test)]
|
||||
|
|
|
@ -134,6 +134,25 @@ fn test_version_empty_lines() {
|
|||
test_helper("version-empty-lines", &["-V", "--version-sort"]);
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn test_version_sort_unstable() {
|
||||
new_ucmd!()
|
||||
.arg("--sort=version")
|
||||
.pipe_in("0.1\n0.02\n0.2\n0.002\n0.3\n")
|
||||
.succeeds()
|
||||
.stdout_is("0.1\n0.002\n0.02\n0.2\n0.3\n");
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn test_version_sort_stable() {
|
||||
new_ucmd!()
|
||||
.arg("--stable")
|
||||
.arg("--sort=version")
|
||||
.pipe_in("0.1\n0.02\n0.2\n0.002\n0.3\n")
|
||||
.succeeds()
|
||||
.stdout_is("0.1\n0.02\n0.2\n0.002\n0.3\n");
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn test_human_numeric_whitespace() {
|
||||
test_helper(
|
||||
|
|
Loading…
Reference in a new issue