LCOV - code coverage report
Current view: top level - test - test-sd-hwdb.c (source / functions) Hit Total Coverage
Test: main_coverage.info Lines: 36 38 94.7 %
Date: 2019-08-22 15:41:25 Functions: 3 3 100.0 %

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

Generated by: LCOV version 1.14