From 6f9fe5818962a142d9277e99febe0e930d2ba2fa Mon Sep 17 00:00:00 2001 From: Yu Watanabe Date: Wed, 21 Nov 2018 13:43:55 +0900 Subject: [PATCH] test: add tests for libudev-list --- src/test/test-libudev.c | 61 +++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 61 insertions(+) diff --git a/src/test/test-libudev.c b/src/test/test-libudev.c index c7cc453..10bf365 100644 --- a/src/test/test-libudev.c +++ b/src/test/test-libudev.c @@ -8,6 +8,7 @@ #include "alloc-util.h" #include "fd-util.h" +#include "libudev-list-internal.h" #include "libudev-util.h" #include "log.h" #include "stdio-util.h" @@ -404,6 +405,64 @@ static void test_util_resolve_subsys_kernel(void) { test_util_resolve_subsys_kernel_one("[net/lo]/address", true, 0, "00:00:00:00:00:00"); } +static void test_list(void) { + struct udev_list list = {}; + struct udev_list_entry *e; + + /* empty list */ + udev_list_init(&list, false); + assert_se(!udev_list_get_entry(&list)); + + /* unique == false */ + udev_list_init(&list, false); + assert_se(udev_list_entry_add(&list, "aaa", "hoge")); + assert_se(udev_list_entry_add(&list, "aaa", "hogehoge")); + assert_se(udev_list_entry_add(&list, "bbb", "foo")); + e = udev_list_get_entry(&list); + assert_se(e); + assert_se(streq_ptr(udev_list_entry_get_name(e), "aaa")); + assert_se(streq_ptr(udev_list_entry_get_value(e), "hoge")); + e = udev_list_entry_get_next(e); + assert_se(e); + assert_se(streq_ptr(udev_list_entry_get_name(e), "aaa")); + assert_se(streq_ptr(udev_list_entry_get_value(e), "hogehoge")); + e = udev_list_entry_get_next(e); + assert_se(e); + assert_se(streq_ptr(udev_list_entry_get_name(e), "bbb")); + assert_se(streq_ptr(udev_list_entry_get_value(e), "foo")); + assert_se(!udev_list_entry_get_next(e)); + + assert_se(!udev_list_entry_get_by_name(e, "aaa")); + assert_se(!udev_list_entry_get_by_name(e, "bbb")); + assert_se(!udev_list_entry_get_by_name(e, "ccc")); + udev_list_cleanup(&list); + + /* unique == true */ + udev_list_init(&list, true); + assert_se(udev_list_entry_add(&list, "aaa", "hoge")); + assert_se(udev_list_entry_add(&list, "aaa", "hogehoge")); + assert_se(udev_list_entry_add(&list, "bbb", "foo")); + e = udev_list_get_entry(&list); + assert_se(e); + assert_se(streq_ptr(udev_list_entry_get_name(e), "aaa")); + assert_se(streq_ptr(udev_list_entry_get_value(e), "hogehoge")); + e = udev_list_entry_get_next(e); + assert_se(streq_ptr(udev_list_entry_get_name(e), "bbb")); + assert_se(streq_ptr(udev_list_entry_get_value(e), "foo")); + assert_se(!udev_list_entry_get_next(e)); + + e = udev_list_entry_get_by_name(e, "bbb"); + assert_se(e); + assert_se(streq_ptr(udev_list_entry_get_name(e), "bbb")); + assert_se(streq_ptr(udev_list_entry_get_value(e), "foo")); + e = udev_list_entry_get_by_name(e, "aaa"); + assert_se(e); + assert_se(streq_ptr(udev_list_entry_get_name(e), "aaa")); + assert_se(streq_ptr(udev_list_entry_get_value(e), "hogehoge")); + assert_se(!udev_list_entry_get_by_name(e, "ccc")); + udev_list_cleanup(&list); +} + int main(int argc, char *argv[]) { _cleanup_(udev_unrefp) struct udev *udev = NULL; bool arg_monitor = false; @@ -486,5 +545,7 @@ int main(int argc, char *argv[]) { test_util_replace_whitespace(); test_util_resolve_subsys_kernel(); + test_list(); + return EXIT_SUCCESS; } -- 2.7.4