X-Git-Url: http://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?a=blobdiff_plain;f=src%2Ftest%2Ftest-util.c;h=229f49288998ef027510d11f0dc6b4b25afb27d7;hb=b0d14c69b2907798ffde32b49b4f28a90242dbb7;hp=b718206e86141d43d7ace2fb842090daf9e32432;hpb=5556b5fe41173107a67dbe875fbd916a46e52a02;p=elogind.git diff --git a/src/test/test-util.c b/src/test/test-util.c index b718206e8..229f49288 100644 --- a/src/test/test-util.c +++ b/src/test/test-util.c @@ -30,6 +30,7 @@ #include "strv.h" #include "def.h" #include "fileio.h" +#include "conf-parser.h" static void test_streq_ptr(void) { assert_se(streq_ptr(NULL, NULL)); @@ -441,29 +442,59 @@ static void test_parse_size(void) { assert_se(parse_size("111", 1024, &bytes) == 0); assert_se(bytes == 111); + assert_se(parse_size("111.4", 1024, &bytes) == 0); + assert_se(bytes == 111); + assert_se(parse_size(" 112 B", 1024, &bytes) == 0); assert_se(bytes == 112); - assert_se(parse_size("3 K", 1024, &bytes) == 0); + assert_se(parse_size(" 112.6 B", 1024, &bytes) == 0); + assert_se(bytes == 112); + + assert_se(parse_size("3.5 K", 1024, &bytes) == 0); + assert_se(bytes == 3*1024 + 512); + + assert_se(parse_size("3. K", 1024, &bytes) == 0); assert_se(bytes == 3*1024); - assert_se(parse_size(" 4 M 11K", 1024, &bytes) == 0); - assert_se(bytes == 4*1024*1024 + 11 * 1024); + assert_se(parse_size("3.0 K", 1024, &bytes) == 0); + assert_se(bytes == 3*1024); + + assert_se(parse_size("3. 0 K", 1024, &bytes) == -EINVAL); + + assert_se(parse_size(" 4 M 11.5K", 1024, &bytes) == 0); + assert_se(bytes == 4*1024*1024 + 11 * 1024 + 512); + + assert_se(parse_size("3B3.5G", 1024, &bytes) == -EINVAL); + + assert_se(parse_size("3.5G3B", 1024, &bytes) == 0); + assert_se(bytes == 3ULL*1024*1024*1024 + 512*1024*1024 + 3); + + assert_se(parse_size("3.5G 4B", 1024, &bytes) == 0); + assert_se(bytes == 3ULL*1024*1024*1024 + 512*1024*1024 + 4); - assert_se(parse_size("3B3G", 1024, &bytes) == 0); - assert_se(bytes == 3ULL*1024*1024*1024 + 3); + assert_se(parse_size("3B3G4T", 1024, &bytes) == -EINVAL); - assert_se(parse_size("3B3G4T", 1024, &bytes) == 0); + assert_se(parse_size("4T3G3B", 1024, &bytes) == 0); + assert_se(bytes == (4ULL*1024 + 3)*1024*1024*1024 + 3); + + assert_se(parse_size(" 4 T 3 G 3 B", 1024, &bytes) == 0); assert_se(bytes == (4ULL*1024 + 3)*1024*1024*1024 + 3); assert_se(parse_size("12P", 1024, &bytes) == 0); assert_se(bytes == 12ULL * 1024*1024*1024*1024*1024); + assert_se(parse_size("12P12P", 1024, &bytes) == -EINVAL); + assert_se(parse_size("3E 2P", 1024, &bytes) == 0); assert_se(bytes == (3 * 1024 + 2ULL) * 1024*1024*1024*1024*1024); assert_se(parse_size("12X", 1024, &bytes) == -EINVAL); + assert_se(parse_size("12.5X", 1024, &bytes) == -EINVAL); + + assert_se(parse_size("12.5e3", 1024, &bytes) == -EINVAL); + assert_se(parse_size("1024E", 1024, &bytes) == -ERANGE); assert_se(parse_size("-1", 1024, &bytes) == -ERANGE); assert_se(parse_size("-1024E", 1024, &bytes) == -ERANGE); @@ -473,6 +504,14 @@ static void test_parse_size(void) { assert_se(parse_size("-10B 20K", 1024, &bytes) == -ERANGE); } +static void test_config_parse_iec_off(void) { + off_t offset = 0; + assert_se(config_parse_iec_off(NULL, "/this/file", 11, "Section", 22, "Size", 0, "4M", &offset, NULL) == 0); + assert_se(offset == 4 * 1024 * 1024); + + assert_se(config_parse_iec_off(NULL, "/this/file", 11, "Section", 22, "Size", 0, "4.5M", &offset, NULL) == 0); +} + static void test_strextend(void) { _cleanup_free_ char *str = strdup("0123"); strextend(&str, "456", "78", "9", NULL); @@ -535,7 +574,6 @@ static void test_fstab_node_to_udev_node(void) { assert_se(streq(n, "/dev/disk/by-partuuid/037b9d94-148e-4ee4-8d38-67bfe15bb535")); free(n); - n = fstab_node_to_udev_node("PONIES=awesome"); puts(n); assert_se(streq(n, "PONIES=awesome")); @@ -589,6 +627,9 @@ static void test_writing_tmpfile(void) { } int main(int argc, char *argv[]) { + log_parse_environment(); + log_open(); + test_streq_ptr(); test_first_word(); test_close_many(); @@ -618,6 +659,7 @@ int main(int argc, char *argv[]) { test_get_process_comm(); test_protect_errno(); test_parse_size(); + test_config_parse_iec_off(); test_strextend(); test_strrep(); test_split_pair();