pacemaker 3.0.1-16e74fc4da
Scalable High-Availability cluster resource manager
Loading...
Searching...
No Matches
pcmk__cmp_schemas_by_name_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
12#include <crm/common/xml.h>
15#include "crmcommon_private.h"
16
17static int
18setup(void **state)
19{
20 setenv("PCMK_schema_directory", PCMK__TEST_SCHEMA_DIR, 1);
22 return 0;
23}
24
25static int
26teardown(void **state)
27{
29 unsetenv("PCMK_schema_directory");
30 return 0;
31}
32
33// Unknown schemas (including NULL) are unsupported, but sort first as failsafe
34static void
35unknown_is_lesser(void **state)
36{
37 assert_true(pcmk__cmp_schemas_by_name("pacemaker-0.1",
38 "pacemaker-0.2") == 0);
39 assert_true(pcmk__cmp_schemas_by_name("pacemaker-0.1",
40 "pacemaker-1.0") < 0);
41 assert_true(pcmk__cmp_schemas_by_name("pacemaker-1.0",
42 "pacemaker-0.1") > 0);
43 assert_true(pcmk__cmp_schemas_by_name("pacemaker-0.1",
44 PCMK_VALUE_NONE) < 0);
46 "pacemaker-0.1") > 0);
47 assert_true(pcmk__cmp_schemas_by_name(NULL, NULL) == 0);
48 assert_true(pcmk__cmp_schemas_by_name(NULL, "pacemaker-0.0") == 0);
49 assert_true(pcmk__cmp_schemas_by_name(NULL, "pacemaker-2.0") < 0);
50 assert_true(pcmk__cmp_schemas_by_name("pacemaker-1.3", NULL) > 0);
51 assert_true(pcmk__cmp_schemas_by_name(NULL, PCMK_VALUE_NONE) < 0);
52 assert_true(pcmk__cmp_schemas_by_name(PCMK_VALUE_NONE, NULL) > 0);
53}
54
55// @COMPAT none is deprecated since 2.1.8
56static void
57none_is_greater(void **state)
58{
60 PCMK_VALUE_NONE) == 0);
61 assert_true(pcmk__cmp_schemas_by_name("pacemaker-3.10",
62 PCMK_VALUE_NONE) < 0);
64 "pacemaker-1.0") > 0);
65}
66
67static void
68known_numeric(void **state)
69{
70 assert_true(pcmk__cmp_schemas_by_name("pacemaker-1.0",
71 "pacemaker-1.0") == 0);
72 assert_true(pcmk__cmp_schemas_by_name("pacemaker-1.2",
73 "pacemaker-1.0") > 0);
74 assert_true(pcmk__cmp_schemas_by_name("pacemaker-1.2",
75 "pacemaker-2.0") < 0);
76}
77
78static void
79case_sensitive(void **state)
80{
81 assert_true(pcmk__cmp_schemas_by_name("Pacemaker-1.0",
82 "pacemaker-1.0") != 0);
83 assert_true(pcmk__cmp_schemas_by_name("PACEMAKER-1.2",
84 "pacemaker-1.2") != 0);
85 assert_true(pcmk__cmp_schemas_by_name("PaceMaker-2.0",
86 "pacemaker-2.0") != 0);
87}
88
89PCMK__UNIT_TEST(setup, teardown,
90 cmocka_unit_test(unknown_is_lesser),
91 cmocka_unit_test(none_is_greater),
92 cmocka_unit_test(known_numeric),
93 cmocka_unit_test(case_sensitive));
#define PCMK_VALUE_NONE
Definition options.h:180
int pcmk__cmp_schemas_by_name(const char *schema1_name, const char *schema2_name)
Definition schemas.c:759
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
Wrappers for and extensions to libxml2.