pacemaker  2.1.9-49aab99839
Scalable High-Availability cluster resource manager
pcmk__xe_get_bool_attr_test.c
Go to the documentation of this file.
1 /*
2  * Copyright 2021-2024 the Pacemaker project contributors
3  *
4  * The version control history for this file may have further details.
5  *
6  * This source code is licensed under the GNU General Public License version 2
7  * or later (GPLv2+) WITHOUT ANY WARRANTY.
8  */
9 
10 #include <crm_internal.h>
11 
14 
15 static void
16 empty_input(void **state)
17 {
18  xmlNode *node = pcmk__xml_parse("<node/>");
19  bool value;
20 
21  assert_int_equal(pcmk__xe_get_bool_attr(NULL, NULL, &value), ENODATA);
22  assert_int_equal(pcmk__xe_get_bool_attr(NULL, "whatever", &value), ENODATA);
23  assert_int_equal(pcmk__xe_get_bool_attr(node, NULL, &value), EINVAL);
24  assert_int_equal(pcmk__xe_get_bool_attr(node, "whatever", NULL), EINVAL);
25 
26  free_xml(node);
27 }
28 
29 static void
30 attr_missing(void **state)
31 {
32  xmlNode *node = pcmk__xml_parse("<node a=\"true\" b=\"false\"/>");
33  bool value;
34 
35  assert_int_equal(pcmk__xe_get_bool_attr(node, "c", &value), ENODATA);
36  free_xml(node);
37 }
38 
39 static void
40 attr_present(void **state)
41 {
42  xmlNode *node = pcmk__xml_parse("<node a=\"true\" b=\"false\" "
43  "c=\"blah\"/>");
44  bool value;
45 
46  value = false;
47  assert_int_equal(pcmk__xe_get_bool_attr(node, "a", &value), pcmk_rc_ok);
48  assert_true(value);
49  value = true;
50  assert_int_equal(pcmk__xe_get_bool_attr(node, "b", &value), pcmk_rc_ok);
51  assert_false(value);
52  assert_int_equal(pcmk__xe_get_bool_attr(node, "c", &value), pcmk_rc_bad_input);
53 
54  free_xml(node);
55 }
56 
58  cmocka_unit_test(empty_input),
59  cmocka_unit_test(attr_missing),
60  cmocka_unit_test(attr_present))
#define PCMK__UNIT_TEST(group_setup, group_teardown,...)
int pcmk__xe_get_bool_attr(const xmlNode *node, const char *name, bool *value)
Definition: nvpair.c:993
int pcmk__xml_test_setup_group(void **state)
Definition: unittest.c:85
void free_xml(xmlNode *child)
Definition: xml.c:958
int pcmk__xml_test_teardown_group(void **state)
Definition: unittest.c:104
xmlNode * pcmk__xml_parse(const char *input)
Definition: xml_io.c:245
#define ENODATA
Definition: portability.h:106