]> git.ipfire.org Git - pakfire.git/commitdiff
util: Add tests for pakfire_format_size
authorMichael Tremer <michael.tremer@ipfire.org>
Wed, 10 Nov 2021 10:20:55 +0000 (10:20 +0000)
committerMichael Tremer <michael.tremer@ipfire.org>
Wed, 10 Nov 2021 10:20:55 +0000 (10:20 +0000)
Signed-off-by: Michael Tremer <michael.tremer@ipfire.org>
src/libpakfire/include/pakfire/util.h
src/libpakfire/package.c
src/libpakfire/progressbar.c
src/libpakfire/transaction.c
src/libpakfire/util.c
tests/libpakfire/util.c

index b143f91f325a64b620a0c3259dd92127dffa66e5..8b8933b1c4d3c1560370708a9021147688d2e864 100644 (file)
@@ -48,7 +48,9 @@ char* pakfire_string_replace(const char* s, const char* pattern, const char* rep
 char** pakfire_split_string(const char* s, char delim);
 char* pakfire_string_join(char** list, const char* delim);
 
-int pakfire_format_size(char* dst, size_t length, double value);
+#define pakfire_format_size(dst, value) \
+       __pakfire_format_size(dst, sizeof(dst) - 1, value)
+int __pakfire_format_size(char* dst, size_t length, double value);
 int pakfire_format_speed(char* dst, size_t length, double value);
 char* pakfire_format_date(time_t t);
 
index 738e98867c39f5bd4038110ee9605c117bbdc86c..6e82e6a41198ac92944e558531e37883e10d55bd 100644 (file)
@@ -983,7 +983,11 @@ static void pakfire_package_dump_add_line_date(char** str, const char* key, unsi
 
 static void pakfire_package_dump_add_line_size(char** str, const char* key, size_t size) {
        char buffer[128];
-       pakfire_format_size(buffer, sizeof(buffer) - 1, size);
+
+       // Format size in human-readable format
+       int r = pakfire_format_size(buffer, size);
+       if (r < 0)
+               return;
 
        pakfire_package_dump_add_line(str, key, buffer);
 }
index ead6250780e5674794956d120af100cc4f20985e..df9e475321cc13d71e7a53c7ad8bab32171b49a9 100644 (file)
@@ -561,7 +561,7 @@ static const char* pakfire_progressbar_bytes_transferred(struct pakfire_progress
                struct pakfire_progressbar_widget* widget, unsigned int width, void* data) {
        char buffer[16];
 
-       int r = pakfire_format_size(buffer, sizeof(buffer) - 1, p->value);
+       int r = pakfire_format_size(buffer, p->value);
        if (r < 0)
                return NULL;
 
index 6225315579b3ec1b31ee97d9c3b3de9f582cdec0..7aac7868775724df0587502f47644eb5dcb84666 100644 (file)
@@ -331,7 +331,9 @@ static void pakfire_transaction_add_package(char*** lines, size_t width, struct
        struct pakfire_repo* repo = pakfire_package_get_repo(pkg);
 
        // Format size
-       pakfire_format_size(size, sizeof(size) - 1, pakfire_package_get_size(pkg));
+       int r = pakfire_format_size(size, pakfire_package_get_size(pkg));
+       if (r < 0)
+               return;
 
        pakfire_transaction_add_line(lines, width,
                pakfire_package_get_name(pkg),
@@ -366,7 +368,10 @@ static void pakfire_transaction_add_separator(char*** lines, size_t width) {
 static void pakfire_transaction_add_usage_line(char*** lines, size_t width,
                const char* headline, ssize_t size) {
        char buffer[128];
-       pakfire_format_size(buffer, sizeof(buffer) - 1, size);
+
+       int r = pakfire_format_size(buffer, size);
+       if (r < 0)
+               return;
 
        pakfire_transaction_append_line(lines,  "%-21s: %s\n", headline, buffer);
 }
index a0fa330c4ffda30435a028938212f2682db91443..92d2282945621708e1ff5a41026f10701129ff5b 100644 (file)
@@ -618,7 +618,7 @@ char* pakfire_string_join(char** list, const char* delim) {
        return string;
 }
 
-int pakfire_format_size(char* dst, size_t length, double value) {
+int __pakfire_format_size(char* dst, size_t length, double value) {
        const char* units[] = {
                "%.0f ",
                "%.0fk",
index 4f6b46a111f6a945620db13ed29b868e4b298ced..999f12707c85c3108609e475532e86b957e5aafa 100644 (file)
@@ -277,6 +277,29 @@ FAIL:
        return EXIT_FAILURE;
 }
 
+static int test_format_size(const struct test* t) {
+       char buffer[128];
+       char small_buffer[2];
+       int r;
+
+       ASSERT(pakfire_format_size(buffer, 0) == 2);
+       ASSERT_STRING_EQUALS(buffer, "0 ");
+
+       ASSERT(pakfire_format_size(buffer, 1024) == 2);
+       ASSERT_STRING_EQUALS(buffer, "1k");
+
+       ASSERT(pakfire_format_size(buffer, 1024 * 1024) == 4);
+       ASSERT_STRING_EQUALS(buffer, "1.0M");
+
+       ASSERT(pakfire_format_size(small_buffer, 0) == 2);
+       ASSERT_STRING_EQUALS(small_buffer, "");
+
+       return EXIT_SUCCESS;
+
+FAIL:
+       return EXIT_FAILURE;
+}
+
 int main(int argc, char** argv) {
        testsuite_add_test(test_basename);
        testsuite_add_test(test_dirname);
@@ -287,6 +310,7 @@ int main(int argc, char** argv) {
        testsuite_add_test(test_string_replace);
        testsuite_add_test(test_string_split);
        testsuite_add_test(test_string_join);
+       testsuite_add_test(test_format_size);
 
        return testsuite_run();
 }