LCOV - code coverage report
Current view: top level - test - test-xml.c (source / functions) Hit Total Coverage
Test: systemd_full.info Lines: 22 22 100.0 %
Date: 2019-08-23 13:36:53 Functions: 2 2 100.0 %
Legend: Lines: hit not hit | Branches: + taken - not taken # not executed Branches: 8 12 66.7 %

           Branch data     Line data    Source code
       1                 :            : /* SPDX-License-Identifier: LGPL-2.1+ */
       2                 :            : 
       3                 :            : #include <stdarg.h>
       4                 :            : 
       5                 :            : #include "alloc-util.h"
       6                 :            : #include "string-util.h"
       7                 :            : #include "util.h"
       8                 :            : #include "xml.h"
       9                 :            : 
      10                 :         16 : static void test_one(const char *data, ...) {
      11                 :         16 :         void *state = NULL;
      12                 :            :         va_list ap;
      13                 :            : 
      14                 :         16 :         va_start(ap, data);
      15                 :            : 
      16                 :         52 :         for (;;) {
      17         [ +  + ]:         68 :                 _cleanup_free_ char *name = NULL;
      18                 :            :                 int t, tt;
      19                 :            :                 const char *nn;
      20                 :            : 
      21                 :         68 :                 t = xml_tokenize(&data, &name, &state, NULL);
      22         [ -  + ]:         68 :                 assert_se(t >= 0);
      23                 :            : 
      24                 :         68 :                 tt = va_arg(ap, int);
      25         [ -  + ]:         68 :                 assert_se(tt >= 0);
      26                 :            : 
      27         [ -  + ]:         68 :                 assert_se(t == tt);
      28         [ +  + ]:         68 :                 if (t == XML_END)
      29                 :         16 :                         break;
      30                 :            : 
      31                 :         52 :                 nn = va_arg(ap, const char *);
      32         [ -  + ]:         52 :                 assert_se(streq_ptr(nn, name));
      33                 :            :         }
      34                 :            : 
      35                 :         16 :         va_end(ap);
      36                 :         16 : }
      37                 :            : 
      38                 :          4 : int main(int argc, char *argv[]) {
      39                 :            : 
      40                 :          4 :         test_one("", XML_END);
      41                 :            : 
      42                 :          4 :         test_one("<foo></foo>",
      43                 :            :                  XML_TAG_OPEN, "foo",
      44                 :            :                  XML_TAG_CLOSE, "foo",
      45                 :            :                  XML_END);
      46                 :            : 
      47                 :          4 :         test_one("<foo waldo=piep meh=\"huhu\"/>",
      48                 :            :                  XML_TAG_OPEN, "foo",
      49                 :            :                  XML_ATTRIBUTE_NAME, "waldo",
      50                 :            :                  XML_ATTRIBUTE_VALUE, "piep",
      51                 :            :                  XML_ATTRIBUTE_NAME, "meh",
      52                 :            :                  XML_ATTRIBUTE_VALUE, "huhu",
      53                 :            :                  XML_TAG_CLOSE_EMPTY, NULL,
      54                 :            :                  XML_END);
      55                 :            : 
      56                 :          4 :         test_one("xxxx\n"
      57                 :            :                  "<foo><?xml foo?>     <!-- zzzz -->  </foo>",
      58                 :            :                  XML_TEXT, "xxxx\n",
      59                 :            :                  XML_TAG_OPEN, "foo",
      60                 :            :                  XML_TEXT, "     ",
      61                 :            :                  XML_TEXT, "  ",
      62                 :            :                  XML_TAG_CLOSE, "foo",
      63                 :            :                  XML_END);
      64                 :            : 
      65                 :          4 :         return 0;
      66                 :            : }

Generated by: LCOV version 1.14