1
Fork 0
mirror of https://github.com/RGBCube/uutils-coreutils synced 2025-07-29 12:07:46 +00:00

uucore: leading zeros are ignored in version compare

This commit is contained in:
John Shin 2023-06-26 16:27:09 -07:00 committed by Sylvestre Ledru
parent 4a192e98d5
commit e9405250f4

View file

@ -141,8 +141,7 @@ pub fn version_cmp(mut a: &str, mut b: &str) -> Ordering {
b = &b[b_numerical_end..]; b = &b[b_numerical_end..];
if a.is_empty() && b.is_empty() { if a.is_empty() && b.is_empty() {
// Default to the lexical comparison. return std::cmp::Ordering::Equal;
return str_cmp;
} }
} }
} }
@ -229,14 +228,14 @@ mod tests {
// Leading zeroes // Leading zeroes
assert_eq!( assert_eq!(
version_cmp("012", "12"), version_cmp("012", "12"),
Ordering::Less, Ordering::Equal,
"A single leading zero can make a difference" "A single leading zero does not make a difference"
); );
assert_eq!( assert_eq!(
version_cmp("000800", "0000800"), version_cmp("000800", "0000800"),
Ordering::Greater, Ordering::Equal,
"Leading number of zeroes is used even if both non-zero number of zeros" "Multiple leading zeros do not make a difference"
); );
// Numbers and other characters combined // Numbers and other characters combined
@ -280,14 +279,8 @@ mod tests {
assert_eq!( assert_eq!(
version_cmp("aa10aa0022", "aa010aa022"), version_cmp("aa10aa0022", "aa010aa022"),
Ordering::Greater, Ordering::Equal,
"The leading zeroes of the first number has priority." "Test multiple numeric values with leading zeros"
);
assert_eq!(
version_cmp("aa10aa0022", "aa10aa022"),
Ordering::Less,
"The leading zeroes of other numbers than the first are used."
); );
assert_eq!( assert_eq!(
@ -307,7 +300,7 @@ mod tests {
assert_eq!( assert_eq!(
version_cmp("aa2000000000000000000000bb", "aa002000000000000000000000bb"), version_cmp("aa2000000000000000000000bb", "aa002000000000000000000000bb"),
Ordering::Greater, Ordering::Equal,
"Leading zeroes for numbers larger than u64::MAX are \ "Leading zeroes for numbers larger than u64::MAX are \
handled correctly without crashing" handled correctly without crashing"
); );