summaryrefslogtreecommitdiff
path: root/test
diff options
context:
space:
mode:
authorPali Rohár <pali@kernel.org>2022-09-12 22:02:27 +0300
committerTom Rini <trini@konsulko.com>2022-09-23 22:13:18 +0300
commitd179018e4c9561afac5ca5c8878852f1171b836b (patch)
tree8ff2702026d701888ebc9145c4e567ff8ad31412 /test
parent6f915a5d24b1c8cf30a29d7edff01eb5951bef0b (diff)
downloadu-boot-d179018e4c9561afac5ca5c8878852f1171b836b.tar.xz
display_options: print_size: Fix order overflow
Function print_size() round size to the nearst value with one decimal fraction number. But in special cases also unit order may overflow. For example value 1073689396 is printed as "1024 MiB" and value 1073741824 as "1 GiB". Fix this issue by detecting order overflow and increasing unit order. With this change also value 1073689396 is printed as "1 GiB". Signed-off-by: Pali Rohár <pali@kernel.org> Reviewed-by: Simon Glass <sjg@chromium.org>
Diffstat (limited to 'test')
-rw-r--r--test/lib/test_print.c3
1 files changed, 3 insertions, 0 deletions
diff --git a/test/lib/test_print.c b/test/lib/test_print.c
index a60a5a51f1..79b67c7793 100644
--- a/test/lib/test_print.c
+++ b/test/lib/test_print.c
@@ -68,6 +68,9 @@ static int lib_test_print_size(struct unit_test_state *uts)
ut_assertok(test_print_size(uts, 7654321, "7.3 MiB;"));
ut_assertok(test_print_size(uts, 87654321, "83.6 MiB;"));
ut_assertok(test_print_size(uts, 987654321, "941.9 MiB;"));
+ ut_assertok(test_print_size(uts, 1073689395, "1023.9 MiB;"));
+ ut_assertok(test_print_size(uts, 1073689396, "1 GiB;"));
+ ut_assertok(test_print_size(uts, 1073741824, "1 GiB;"));
ut_assertok(test_print_size(uts, 1987654321, "1.9 GiB;"));
ut_assertok(test_print_size(uts, 54321987654321, "49.4 TiB;"));
return 0;