diff options
author | Daniel Baumann <daniel.baumann@progress-linux.org> | 2023-04-03 08:17:38 +0000 |
---|---|---|
committer | Daniel Baumann <daniel.baumann@progress-linux.org> | 2023-04-03 08:17:38 +0000 |
commit | d57675fc67455faf7c68d4003a1ce884779e2c7c (patch) | |
tree | 3becd19ea8eda8827e45bf9e627d580fe614be64 /unit/test-suffix-si-parse.c | |
parent | Releasing debian version 2.4-1. (diff) | |
download | nvme-cli-d57675fc67455faf7c68d4003a1ce884779e2c7c.tar.xz nvme-cli-d57675fc67455faf7c68d4003a1ce884779e2c7c.zip |
Merging upstream version 2.4+really2.3.
This reverts commit f42531334c05b7f49ae43c0a27e347a487fb2667.
Diffstat (limited to 'unit/test-suffix-si-parse.c')
-rw-r--r-- | unit/test-suffix-si-parse.c | 53 |
1 files changed, 20 insertions, 33 deletions
diff --git a/unit/test-suffix-si-parse.c b/unit/test-suffix-si-parse.c index bc92455..879518b 100644 --- a/unit/test-suffix-si-parse.c +++ b/unit/test-suffix-si-parse.c @@ -3,8 +3,6 @@ #include <string.h> #include <stdio.h> #include <stdlib.h> -#include <errno.h> -#include <locale.h> #include "../util/suffix.h" #include "../util/types.h" @@ -13,54 +11,44 @@ static int test_rc; -static void check_num(const char *val, __u64 exp, __u64 num) +static void check_num(const char *val, int lbas, __u64 exp, __u64 num) { if (exp == num) return; - printf("ERROR: printing {%s}, got '%llu', expected '%llu'\n", - val, (unsigned long long)num, (unsigned long long)exp); + printf("ERROR: printing {%s} (lbas %d), got '%llu', expected '%llu'\n", + val, lbas, (unsigned long long)num, (unsigned long long)exp); test_rc = 1; } struct tonum_test { const char *val; - const uint64_t exp; - int ret; + int lbas; + const __u64 exp; }; static struct tonum_test tonum_tests[] = { - { "11995709440", 11995709440, 0 }, - { "1199570940", 1199570940, 0}, - { "234.567M", 234567000, 0 }, - { "1.2k", 1200, 0 }, - { "6.14T", 6140000000000, 0 }, - { "123.4567k", 123456, 0 }, - { "12345.6789101112M", 12345678910, 0}, - { "6.14", 6, 0 }, - { "6.14#", 0, -EINVAL }, - { "2,33", 0, -EINVAL }, - { "3..3", 0, -EINVAL }, - { "123.12MM", 0, -EINVAL }, + { "11995709440", 512, 11995709440 }, + { "1199570940", 512, 1199570940 }, + { "6.14T", 512, 11992187500 }, + { "6.14T", 520, 11807692307 }, + { "6.14T", 4096, 1499023437 }, + { "6.14", 512, 0 }, + { "6.14#", 512, 0 }, }; void tonum_test(struct tonum_test *test) { - char *endptr; - uint64_t num; - int ret; - - ret = suffix_si_parse(test->val, &endptr, &num); - if (ret != test->ret) { - printf("ERROR: converting {%s} failed\n", test->val); - test_rc = 1; - return; - } - if (ret) - return; + __u64 num; + bool suffixed; + + num = suffix_si_parse(test->val, &suffixed); + + if (suffixed) + num /= test->lbas; - check_num(test->val, test->exp, num); + check_num(test->val, test->lbas, test->exp, num); } int main(void) @@ -68,7 +56,6 @@ int main(void) unsigned int i; test_rc = 0; - setlocale(LC_NUMERIC, "C"); for (i = 0; i < ARRAY_SIZE(tonum_tests); i++) tonum_test(&tonum_tests[i]); |