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

          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           4 : static void test_one(const char *data, ...) {
      11           4 :         void *state = NULL;
      12             :         va_list ap;
      13             : 
      14           4 :         va_start(ap, data);
      15             : 
      16          13 :         for (;;) {
      17          17 :                 _cleanup_free_ char *name = NULL;
      18             :                 int t, tt;
      19             :                 const char *nn;
      20             : 
      21          17 :                 t = xml_tokenize(&data, &name, &state, NULL);
      22          17 :                 assert_se(t >= 0);
      23             : 
      24          17 :                 tt = va_arg(ap, int);
      25          17 :                 assert_se(tt >= 0);
      26             : 
      27          17 :                 assert_se(t == tt);
      28          17 :                 if (t == XML_END)
      29           4 :                         break;
      30             : 
      31          13 :                 nn = va_arg(ap, const char *);
      32          13 :                 assert_se(streq_ptr(nn, name));
      33             :         }
      34             : 
      35           4 :         va_end(ap);
      36           4 : }
      37             : 
      38           1 : int main(int argc, char *argv[]) {
      39             : 
      40           1 :         test_one("", XML_END);
      41             : 
      42           1 :         test_one("<foo></foo>",
      43             :                  XML_TAG_OPEN, "foo",
      44             :                  XML_TAG_CLOSE, "foo",
      45             :                  XML_END);
      46             : 
      47           1 :         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           1 :         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           1 :         return 0;
      66             : }

Generated by: LCOV version 1.14