summaryrefslogtreecommitdiffstats
path: root/lib/common/tests/flags
diff options
context:
space:
mode:
Diffstat (limited to 'lib/common/tests/flags')
-rw-r--r--lib/common/tests/flags/Makefile.am20
-rw-r--r--lib/common/tests/flags/pcmk__clear_flags_as_test.c41
-rw-r--r--lib/common/tests/flags/pcmk__set_flags_as_test.c25
-rw-r--r--lib/common/tests/flags/pcmk_all_flags_set_test.c33
-rw-r--r--lib/common/tests/flags/pcmk_any_flags_set_test.c26
5 files changed, 145 insertions, 0 deletions
diff --git a/lib/common/tests/flags/Makefile.am b/lib/common/tests/flags/Makefile.am
new file mode 100644
index 0000000..16d8ffb
--- /dev/null
+++ b/lib/common/tests/flags/Makefile.am
@@ -0,0 +1,20 @@
+#
+# Copyright 2020-2022 the Pacemaker project contributors
+#
+# The version control history for this file may have further details.
+#
+# This source code is licensed under the GNU General Public License version 2
+# or later (GPLv2+) WITHOUT ANY WARRANTY.
+#
+
+include $(top_srcdir)/mk/tap.mk
+include $(top_srcdir)/mk/unittest.mk
+
+# Add "_test" to the end of all test program names to simplify .gitignore.
+check_PROGRAMS = \
+ pcmk__clear_flags_as_test \
+ pcmk__set_flags_as_test \
+ pcmk_all_flags_set_test \
+ pcmk_any_flags_set_test
+
+TESTS = $(check_PROGRAMS)
diff --git a/lib/common/tests/flags/pcmk__clear_flags_as_test.c b/lib/common/tests/flags/pcmk__clear_flags_as_test.c
new file mode 100644
index 0000000..07dbe28
--- /dev/null
+++ b/lib/common/tests/flags/pcmk__clear_flags_as_test.c
@@ -0,0 +1,41 @@
+/*
+ * Copyright 2020-2021 the Pacemaker project contributors
+ *
+ * The version control history for this file may have further details.
+ *
+ * This source code is licensed under the GNU General Public License version 2
+ * or later (GPLv2+) WITHOUT ANY WARRANTY.
+ */
+
+#include <crm_internal.h>
+
+#include <crm/common/unittest_internal.h>
+
+static void
+clear_none(void **state) {
+ assert_int_equal(pcmk__clear_flags_as(__func__, __LINE__, LOG_TRACE, "Test",
+ "test", 0x0f0, 0x00f, NULL), 0x0f0);
+ assert_int_equal(pcmk__clear_flags_as(__func__, __LINE__, LOG_TRACE, "Test",
+ "test", 0x0f0, 0xf0f, NULL), 0x0f0);
+}
+
+static void
+clear_some(void **state) {
+ assert_int_equal(pcmk__clear_flags_as(__func__, __LINE__, LOG_TRACE, "Test",
+ "test", 0x0f0, 0x020, NULL), 0x0d0);
+ assert_int_equal(pcmk__clear_flags_as(__func__, __LINE__, LOG_TRACE, "Test",
+ "test", 0x0f0, 0x030, NULL), 0x0c0);
+}
+
+static void
+clear_all(void **state) {
+ assert_int_equal(pcmk__clear_flags_as(__func__, __LINE__, LOG_TRACE, "Test",
+ "test", 0x0f0, 0x0f0, NULL), 0x000);
+ assert_int_equal(pcmk__clear_flags_as(__func__, __LINE__, LOG_TRACE, "Test",
+ "test", 0x0f0, 0xfff, NULL), 0x000);
+}
+
+PCMK__UNIT_TEST(NULL, NULL,
+ cmocka_unit_test(clear_none),
+ cmocka_unit_test(clear_some),
+ cmocka_unit_test(clear_all))
diff --git a/lib/common/tests/flags/pcmk__set_flags_as_test.c b/lib/common/tests/flags/pcmk__set_flags_as_test.c
new file mode 100644
index 0000000..cd14c85
--- /dev/null
+++ b/lib/common/tests/flags/pcmk__set_flags_as_test.c
@@ -0,0 +1,25 @@
+/*
+ * Copyright 2020-2021 the Pacemaker project contributors
+ *
+ * The version control history for this file may have further details.
+ *
+ * This source code is licensed under the GNU General Public License version 2
+ * or later (GPLv2+) WITHOUT ANY WARRANTY.
+ */
+
+#include <crm_internal.h>
+
+#include <crm/common/unittest_internal.h>
+
+static void
+set_flags(void **state) {
+ assert_int_equal(pcmk__set_flags_as(__func__, __LINE__, LOG_TRACE, "Test",
+ "test", 0x0f0, 0x00f, NULL), 0x0ff);
+ assert_int_equal(pcmk__set_flags_as(__func__, __LINE__, LOG_TRACE, "Test",
+ "test", 0x0f0, 0xf0f, NULL), 0xfff);
+ assert_int_equal(pcmk__set_flags_as(__func__, __LINE__, LOG_TRACE, "Test",
+ "test", 0x0f0, 0xfff, NULL), 0xfff);
+}
+
+PCMK__UNIT_TEST(NULL, NULL,
+ cmocka_unit_test(set_flags))
diff --git a/lib/common/tests/flags/pcmk_all_flags_set_test.c b/lib/common/tests/flags/pcmk_all_flags_set_test.c
new file mode 100644
index 0000000..512ccce
--- /dev/null
+++ b/lib/common/tests/flags/pcmk_all_flags_set_test.c
@@ -0,0 +1,33 @@
+/*
+ * Copyright 2020-2021 the Pacemaker project contributors
+ *
+ * The version control history for this file may have further details.
+ *
+ * This source code is licensed under the GNU General Public License version 2
+ * or later (GPLv2+) WITHOUT ANY WARRANTY.
+ */
+
+#include <crm_internal.h>
+
+#include <crm/common/unittest_internal.h>
+
+static void
+all_set(void **state) {
+ assert_false(pcmk_all_flags_set(0x000, 0x003));
+ assert_true(pcmk_all_flags_set(0x00f, 0x003));
+ assert_false(pcmk_all_flags_set(0x00f, 0x010));
+ assert_false(pcmk_all_flags_set(0x00f, 0x011));
+ assert_true(pcmk_all_flags_set(0x000, 0x000));
+ assert_true(pcmk_all_flags_set(0x00f, 0x000));
+}
+
+static void
+one_is_set(void **state) {
+ // pcmk_is_set() is a simple macro alias for pcmk_all_flags_set()
+ assert_true(pcmk_is_set(0x00f, 0x001));
+ assert_false(pcmk_is_set(0x00f, 0x010));
+}
+
+PCMK__UNIT_TEST(NULL, NULL,
+ cmocka_unit_test(all_set),
+ cmocka_unit_test(one_is_set))
diff --git a/lib/common/tests/flags/pcmk_any_flags_set_test.c b/lib/common/tests/flags/pcmk_any_flags_set_test.c
new file mode 100644
index 0000000..dc3aabc
--- /dev/null
+++ b/lib/common/tests/flags/pcmk_any_flags_set_test.c
@@ -0,0 +1,26 @@
+/*
+ * Copyright 2020-2021 the Pacemaker project contributors
+ *
+ * The version control history for this file may have further details.
+ *
+ * This source code is licensed under the GNU General Public License version 2
+ * or later (GPLv2+) WITHOUT ANY WARRANTY.
+ */
+
+#include <crm_internal.h>
+
+#include <crm/common/unittest_internal.h>
+
+static void
+any_set(void **state) {
+ assert_false(pcmk_any_flags_set(0x000, 0x000));
+ assert_false(pcmk_any_flags_set(0x000, 0x001));
+ assert_true(pcmk_any_flags_set(0x00f, 0x001));
+ assert_false(pcmk_any_flags_set(0x00f, 0x010));
+ assert_true(pcmk_any_flags_set(0x00f, 0x011));
+ assert_false(pcmk_any_flags_set(0x000, 0x000));
+ assert_false(pcmk_any_flags_set(0x00f, 0x000));
+}
+
+PCMK__UNIT_TEST(NULL, NULL,
+ cmocka_unit_test(any_set))