X-Git-Url: http://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?a=blobdiff_plain;f=src%2Ftest%2Ftest-util.c;h=93929cd9fca7b26c96e1db619af6a1fc912cbd3b;hb=2f1a3d086860b7cff659e425ea16d8bb34dc62ac;hp=74f83a2629e84a4febb26db8c1fcdc7a66937455;hpb=9480794b277b5ce33e467578ed669996df576bb9;p=elogind.git diff --git a/src/test/test-util.c b/src/test/test-util.c index 74f83a262..93929cd9f 100644 --- a/src/test/test-util.c +++ b/src/test/test-util.c @@ -67,7 +67,7 @@ static void test_close_many(void) { assert_se(fcntl(fds[1], F_GETFD) == -1); assert_se(fcntl(fds[2], F_GETFD) >= 0); - close_nointr_nofail(fds[2]); + safe_close(fds[2]); unlink(name0); unlink(name1); @@ -460,21 +460,32 @@ static void test_parse_size(void) { assert_se(parse_size("3.0 K", 1024, &bytes) == 0); assert_se(bytes == 3*1024); - assert_se(parse_size("3. 0 K", 1024, &bytes) == 0); - assert_se(bytes == 3); + 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) == 0); + 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("3B3G4T", 1024, &bytes) == 0); + 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("3B3G4T", 1024, &bytes) == -EINVAL); + + 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); @@ -563,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")); @@ -616,6 +626,55 @@ static void test_writing_tmpfile(void) { assert(streq(contents, "abc\n" ALPHANUMERICAL "\n")); } +static void test_hexdump(void) { + uint8_t data[146]; + unsigned i; + + hexdump(stdout, NULL, 0); + hexdump(stdout, "", 0); + hexdump(stdout, "", 1); + hexdump(stdout, "x", 1); + hexdump(stdout, "x", 2); + hexdump(stdout, "foobar", 7); + hexdump(stdout, "f\nobar", 7); + hexdump(stdout, "xxxxxxxxxxxxxxxxxxxxyz", 23); + + for (i = 0; i < ELEMENTSOF(data); i++) + data[i] = i*2; + + hexdump(stdout, data, sizeof(data)); +} + +static void test_log2i(void) { + assert_se(log2i(1) == 0); + assert_se(log2i(2) == 1); + assert_se(log2i(3) == 1); + assert_se(log2i(4) == 2); + assert_se(log2i(32) == 5); + assert_se(log2i(33) == 5); + assert_se(log2i(63) == 5); + assert_se(log2i(INT_MAX) == sizeof(int)*8-2); +} + +static void test_foreach_string(void) { + const char * const t[] = { + "foo", + "bar", + "waldo", + NULL + }; + const char *x; + unsigned i = 0; + + FOREACH_STRING(x, "foo", "bar", "waldo") + assert_se(streq_ptr(t[i++], x)); + + assert_se(i == 3); + + FOREACH_STRING(x, "zzz") + assert_se(streq(x, "zzz")); +} + int main(int argc, char *argv[]) { log_parse_environment(); log_open(); @@ -657,6 +716,9 @@ int main(int argc, char *argv[]) { test_get_files_in_directory(); test_in_set(); test_writing_tmpfile(); + test_hexdump(); + test_log2i(); + test_foreach_string(); return 0; }