summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorandy.boot <bootandy@gmail.com>2024-04-28 11:30:26 +0100
committerandy.boot <bootandy@gmail.com>2024-05-01 20:42:04 +0100
commita3dcab94546021409b1c2198abb653455ffb542f (patch)
tree795828849dbc1c07a3073e26554a6931184f340d
parent658b11d0f8d193648430c68b6ca7e89436e7ac2d (diff)
fix: si detection - single digits are binary
-rw-r--r--src/config.rs3
-rw-r--r--src/display.rs4
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");