pacemaker 3.0.1-16e74fc4da
Scalable High-Availability cluster resource manager
Loading...
Searching...
No Matches
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
15static void
16empty_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 pcmk__xml_free(node);
27}
28
29static void
30attr_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 pcmk__xml_free(node);
37}
38
39static void
40attr_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 pcmk__xml_free(node);
55}
56
58 cmocka_unit_test(empty_input),
59 cmocka_unit_test(attr_missing),
60 cmocka_unit_test(attr_present))
#define ENODATA
Definition portability.h:61
@ pcmk_rc_ok
Definition results.h:159
@ pcmk_rc_bad_input
Definition results.h:119
int pcmk__xml_test_teardown_group(void **state)
Definition unittest.c:105
#define PCMK__UNIT_TEST(group_setup, group_teardown,...)
int pcmk__xml_test_setup_group(void **state)
Definition unittest.c:87
int pcmk__xe_get_bool_attr(const xmlNode *node, const char *name, bool *value)
void pcmk__xml_free(xmlNode *xml)
Definition xml.c:816
xmlNode * pcmk__xml_parse(const char *input)
Definition xml_io.c:167