]>
Commit | Line | Data |
---|---|---|
ca7a9afc ZJS |
1 | #include "sd-hwdb.h" |
2 | ||
3 | #include "alloc-util.h" | |
4 | #include "errno.h" | |
5 | #include "tests.h" | |
6 | ||
4dd73b88 | 7 | static int test_failed_enumerate(void) { |
86f4edef | 8 | _cleanup_(sd_hwdb_unrefp) sd_hwdb *hwdb = NULL; |
ca7a9afc | 9 | const char *key, *value; |
4dd73b88 | 10 | int r; |
ca7a9afc ZJS |
11 | |
12 | log_info("/* %s */", __func__); | |
13 | ||
4dd73b88 ZJS |
14 | r = sd_hwdb_new(&hwdb); |
15 | if (r == -ENOENT) | |
16 | return r; | |
17 | assert_se(r == 0); | |
ca7a9afc ZJS |
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); | |
4dd73b88 ZJS |
24 | |
25 | return 0; | |
ca7a9afc ZJS |
26 | } |
27 | ||
28 | #define DELL_MODALIAS \ | |
29 | "evdev:atkbd:dmi:bvnXXX:bvrYYY:bdZZZ:svnDellXXX:pnYYY" | |
30 | ||
31 | static void test_basic_enumerate(void) { | |
86f4edef | 32 | _cleanup_(sd_hwdb_unrefp) sd_hwdb *hwdb = NULL; |
ca7a9afc ZJS |
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[]) { | |
4dd73b88 ZJS |
63 | int r; |
64 | ||
ca7a9afc ZJS |
65 | test_setup_logging(LOG_DEBUG); |
66 | ||
4dd73b88 ZJS |
67 | r = test_failed_enumerate(); |
68 | if (r < 0) | |
69 | return log_tests_skipped_errno(r, "cannot open hwdb"); | |
70 | ||
ca7a9afc ZJS |
71 | test_basic_enumerate(); |
72 | ||
73 | return 0; | |
74 | } |