]> git.ipfire.org Git - thirdparty/systemd.git/blob - src/test/test-sd-hwdb.c
Merge pull request #10152 from yuwata/udev-use-extract
[thirdparty/systemd.git] / src / test / test-sd-hwdb.c
1 #include "sd-hwdb.h"
2
3 #include "alloc-util.h"
4 #include "errno.h"
5 #include "tests.h"
6
7 static int test_failed_enumerate(void) {
8 _cleanup_(sd_hwdb_unrefp) sd_hwdb *hwdb;
9 const char *key, *value;
10 int r;
11
12 log_info("/* %s */", __func__);
13
14 r = sd_hwdb_new(&hwdb);
15 if (r == -ENOENT)
16 return r;
17 assert_se(r == 0);
18
19 assert_se(sd_hwdb_seek(hwdb, "no-such-modalias-should-exist") == 0);
20
21 assert_se(sd_hwdb_enumerate(hwdb, &key, &value) == 0);
22 assert_se(sd_hwdb_enumerate(hwdb, &key, NULL) == -EINVAL);
23 assert_se(sd_hwdb_enumerate(hwdb, NULL, &value) == -EINVAL);
24
25 return 0;
26 }
27
28 #define DELL_MODALIAS \
29 "evdev:atkbd:dmi:bvnXXX:bvrYYY:bdZZZ:svnDellXXX:pnYYY"
30
31 static void test_basic_enumerate(void) {
32 _cleanup_(sd_hwdb_unrefp) sd_hwdb *hwdb;
33 const char *key, *value;
34 size_t len1 = 0, len2 = 0;
35 int r;
36
37 log_info("/* %s */", __func__);
38
39 assert_se(sd_hwdb_new(&hwdb) == 0);
40
41 assert_se(sd_hwdb_seek(hwdb, DELL_MODALIAS) == 0);
42
43 for (;;) {
44 r = sd_hwdb_enumerate(hwdb, &key, &value);
45 assert(IN_SET(r, 0, 1));
46 if (r == 0)
47 break;
48 assert(key);
49 assert(value);
50 log_debug("A: \"%s\" \"%s\"", key, value);
51 len1 += strlen(key) + strlen(value);
52 }
53
54 SD_HWDB_FOREACH_PROPERTY(hwdb, DELL_MODALIAS, key, value) {
55 log_debug("B: \"%s\" \"%s\"", key, value);
56 len2 += strlen(key) + strlen(value);
57 }
58
59 assert_se(len1 == len2);
60 }
61
62 int main(int argc, char *argv[]) {
63 int r;
64
65 test_setup_logging(LOG_DEBUG);
66
67 r = test_failed_enumerate();
68 if (r < 0)
69 return log_tests_skipped_errno(r, "cannot open hwdb");
70
71 test_basic_enumerate();
72
73 return 0;
74 }