From 65d2fd7f8d8e76b26c00ac5ce1d6de8e5b9bd4f4 Mon Sep 17 00:00:00 2001 From: "andy.boot" Date: Sun, 28 Apr 2024 11:30:26 +0100 Subject: fix: si detection - single digits are binary --- src/config.rs | 3 ++- src/display.rs | 4 +++- 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/src/config.rs b/src/config.rs index 5ea34da..afec281 100644 --- a/src/config.rs +++ b/src/config.rs @@ -185,7 +185,8 @@ mod tests { assert_eq!(convert_min_size("95RUBBISH"), None); assert_eq!(convert_min_size("10Ki"), Some(10 * 1024)); assert_eq!(convert_min_size("10MiB"), Some(10 * 1024usize.pow(2))); - assert_eq!(convert_min_size("10M"), Some(10 * 1000usize.pow(2))); + assert_eq!(convert_min_size("10M"), Some(10 * 1024usize.pow(2))); + assert_eq!(convert_min_size("10Mb"), Some(10 * 1000usize.pow(2))); assert_eq!(convert_min_size("2Gi"), Some(2 * 1024usize.pow(3))); } diff --git a/src/display.rs b/src/display.rs index 154c985..ae03863 100644 --- a/src/display.rs +++ b/src/display.rs @@ -415,7 +415,7 @@ pub fn get_type_of_thousand(output_str: &str) -> u64 { 1024 } else if output_str == "si" { 1000 - } else if output_str.contains('i') { + } else if output_str.contains('i') || output_str.len() == 1 { 1024 } else { 1000 @@ -555,12 +555,14 @@ mod tests { assert_eq!(human_readable_number(1024 * 100, "si"), "102K"); } + // Refer to https://en.wikipedia.org/wiki/Byte#Multiple-byte_units #[test] fn test_human_readable_number_kb() { let hrn = human_readable_number; assert_eq!(hrn(1023, "b"), "1023B"); assert_eq!(hrn(1000 * 1000, "bytes"), "1000000B"); assert_eq!(hrn(1023, "kb"), "1K"); + assert_eq!(hrn(1023, "k"), "0K"); assert_eq!(hrn(1023, "kib"), "0K"); assert_eq!(hrn(1024, "kib"), "1K"); assert_eq!(hrn(1024 * 512, "kib"), "512K"); -- cgit v1.2.3