pacemaker 3.0.1-16e74fc4da
Scalable High-Availability cluster resource manager
Loading...
Searching...
No Matches
pcmk__xc_create_test.c
Go to the documentation of this file.
1/*
2 * Copyright 2024-2025 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
13
14#include "crmcommon_private.h"
15
16/* This tests new_private_data() indirectly for comment nodes. Testing
17 * free_private_data() would be much less straightforward and is not worth the
18 * hassle.
19 */
20
21static void
22assert_comment(const char *content)
23{
24 xmlDoc *doc = pcmk__xml_new_doc();
25 xml_doc_private_t *docpriv = doc->_private;
26 xmlNode *node = NULL;
27 xml_node_private_t *nodepriv = NULL;
28
30
31 node = pcmk__xc_create(doc, content);
32 assert_non_null(node);
33 assert_int_equal(node->type, XML_COMMENT_NODE);
34 assert_ptr_equal(node->doc, doc);
35
36 if (content == NULL) {
37 assert_null(node->content);
38 } else {
39 assert_non_null(node->content);
40 assert_string_equal((const char *) node->content, content);
41 }
42
43 nodepriv = node->_private;
44 assert_non_null(nodepriv);
45 assert_int_equal(nodepriv->check, PCMK__XML_NODE_PRIVATE_MAGIC);
46 assert_true(pcmk_all_flags_set(nodepriv->flags,
48
49 assert_true(pcmk_is_set(docpriv->flags, pcmk__xf_dirty));
50
51 pcmk__xml_free(node);
53}
54
55static void
56null_doc(void **state)
57{
59 pcmk__assert_asserts(pcmk__xc_create(NULL, "some content"));
60}
61
62static void
63with_doc(void **state)
64{
65 assert_comment(NULL);
66 assert_comment("some content");
67}
68
70 cmocka_unit_test(null_doc),
71 cmocka_unit_test(with_doc));
#define pcmk_is_set(g, f)
Convenience alias for pcmk_all_flags_set(), to check single flag.
Definition util.h:80
G_GNUC_INTERNAL xmlDoc * pcmk__xml_new_doc(void)
Definition xml.c:499
#define PCMK__XML_NODE_PRIVATE_MAGIC
uint32_t flags
Group of enum pcmk__xml_flags
uint32_t check
Magic number for checking integrity.
uint32_t flags
Group of enum pcmk__xml_flags
#define pcmk__assert_asserts(stmt)
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
xmlNode * pcmk__xc_create(xmlDoc *doc, const char *content)
Definition xml_comment.c:30
void pcmk__xml_doc_set_flags(xmlDoc *doc, uint32_t flags)
Definition xml.c:128
@ pcmk__xf_created
Node was created.
@ pcmk__xf_dirty
@ pcmk__xf_tracking
Tracking is enabled (set for document only)
void pcmk__xml_free(xmlNode *xml)
Definition xml.c:816
void pcmk__xml_free_doc(xmlDoc *doc)
Definition xml.c:515