]> git.ipfire.org Git - thirdparty/ccache.git/commitdiff
feat: Improve Util::format_human_readable_size for small sizes
authorJoel Rosdahl <joel@rosdahl.net>
Mon, 7 Nov 2022 20:04:01 +0000 (21:04 +0100)
committerJoel Rosdahl <joel@rosdahl.net>
Sun, 27 Nov 2022 20:33:49 +0000 (21:33 +0100)
src/Util.cpp
unittest/test_Util.cpp

index e802a83be83c7721f769ddb0c9aa4de75cb6da14..3aecbaa1ef8a4c600718d92b1169ecac693c84ee 100644 (file)
@@ -562,8 +562,12 @@ format_human_readable_size(uint64_t size)
     return FMT("{:.1f} GB", size / ((double)(1000 * 1000 * 1000)));
   } else if (size >= 1000 * 1000) {
     return FMT("{:.1f} MB", size / ((double)(1000 * 1000)));
-  } else {
+  } else if (size >= 1000) {
     return FMT("{:.1f} kB", size / 1000.0);
+  } else if (size == 1) {
+    return "1 byte";
+  } else {
+    return FMT("{} bytes", size);
   }
 }
 
index b71dfdb33cc481cbb9c83a18e65d284e2104cd01..8cb331b4a9b8300aa80f7609ce2f2f6a97f785be 100644 (file)
@@ -258,12 +258,11 @@ TEST_CASE("Util::format_base32hex")
 
 TEST_CASE("Util::format_human_readable_size")
 {
-  CHECK(Util::format_human_readable_size(0) == "0.0 kB");
-  CHECK(Util::format_human_readable_size(1) == "0.0 kB");
-  CHECK(Util::format_human_readable_size(49) == "0.0 kB");
-  CHECK(Util::format_human_readable_size(51) == "0.1 kB");
-  CHECK(Util::format_human_readable_size(949) == "0.9 kB");
-  CHECK(Util::format_human_readable_size(951) == "1.0 kB");
+  CHECK(Util::format_human_readable_size(0) == "0 bytes");
+  CHECK(Util::format_human_readable_size(1) == "1 byte");
+  CHECK(Util::format_human_readable_size(42) == "42 bytes");
+  CHECK(Util::format_human_readable_size(1949) == "1.9 kB");
+  CHECK(Util::format_human_readable_size(1951) == "2.0 kB");
   CHECK(Util::format_human_readable_size(499.7 * 1000) == "499.7 kB");
   CHECK(Util::format_human_readable_size(1000 * 1000) == "1.0 MB");
   CHECK(Util::format_human_readable_size(1234 * 1000) == "1.2 MB");