pacemaker 2.1.4-dc6eb4362e
Scalable High-Availability cluster resource manager
crm_str_to_boolean_test.c
Go to the documentation of this file.
1/*
2 * Copyright 2021 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 Lesser General Public License
7 * version 2.1 or later (LGPLv2.1+) WITHOUT ANY WARRANTY.
8 */
9
10#include <crm_internal.h>
11
12#include <stdarg.h>
13#include <stddef.h>
14#include <stdint.h>
15#include <setjmp.h>
16#include <cmocka.h>
17
18static void
19bad_input(void **state) {
20 assert_int_equal(crm_str_to_boolean(NULL, NULL), -1);
21 assert_int_equal(crm_str_to_boolean("", NULL), -1);
22 assert_int_equal(crm_str_to_boolean("blahblah", NULL), -1);
23}
24
25static void
26is_true(void **state) {
27 int ret;
28
29 assert_int_equal(crm_str_to_boolean("true", &ret), 1);
30 assert_true(ret);
31 assert_int_equal(crm_str_to_boolean("TrUe", &ret), 1);
32 assert_true(ret);
33 assert_int_equal(crm_str_to_boolean("on", &ret), 1);
34 assert_true(ret);
35 assert_int_equal(crm_str_to_boolean("ON", &ret), 1);
36 assert_true(ret);
37 assert_int_equal(crm_str_to_boolean("yes", &ret), 1);
38 assert_true(ret);
39 assert_int_equal(crm_str_to_boolean("yES", &ret), 1);
40 assert_true(ret);
41 assert_int_equal(crm_str_to_boolean("y", &ret), 1);
42 assert_true(ret);
43 assert_int_equal(crm_str_to_boolean("Y", &ret), 1);
44 assert_true(ret);
45 assert_int_equal(crm_str_to_boolean("1", &ret), 1);
46 assert_true(ret);
47}
48
49static void
50is_not_true(void **state) {
51 assert_int_equal(crm_str_to_boolean("truedat", NULL), -1);
52 assert_int_equal(crm_str_to_boolean("onnn", NULL), -1);
53 assert_int_equal(crm_str_to_boolean("yep", NULL), -1);
54 assert_int_equal(crm_str_to_boolean("Y!", NULL), -1);
55 assert_int_equal(crm_str_to_boolean("100", NULL), -1);
56}
57
58static void
59is_false(void **state) {
60 int ret;
61
62 assert_int_equal(crm_str_to_boolean("false", &ret), 1);
63 assert_false(ret);
64 assert_int_equal(crm_str_to_boolean("fAlSe", &ret), 1);
65 assert_false(ret);
66 assert_int_equal(crm_str_to_boolean("off", &ret), 1);
67 assert_false(ret);
68 assert_int_equal(crm_str_to_boolean("OFF", &ret), 1);
69 assert_false(ret);
70 assert_int_equal(crm_str_to_boolean("no", &ret), 1);
71 assert_false(ret);
72 assert_int_equal(crm_str_to_boolean("No", &ret), 1);
73 assert_false(ret);
74 assert_int_equal(crm_str_to_boolean("n", &ret), 1);
75 assert_false(ret);
76 assert_int_equal(crm_str_to_boolean("N", &ret), 1);
77 assert_false(ret);
78 assert_int_equal(crm_str_to_boolean("0", &ret), 1);
79 assert_false(ret);
80}
81
82static void
83is_not_false(void **state) {
84 assert_int_equal(crm_str_to_boolean("falseee", NULL), -1);
85 assert_int_equal(crm_str_to_boolean("of", NULL), -1);
86 assert_int_equal(crm_str_to_boolean("nope", NULL), -1);
87 assert_int_equal(crm_str_to_boolean("N!", NULL), -1);
88 assert_int_equal(crm_str_to_boolean("000", NULL), -1);
89}
90
91int
92main(int argc, char **argv)
93{
94 const struct CMUnitTest tests[] = {
95 cmocka_unit_test(bad_input),
96 cmocka_unit_test(is_true),
97 cmocka_unit_test(is_not_true),
98 cmocka_unit_test(is_false),
99 cmocka_unit_test(is_not_false),
100 };
101
102 cmocka_set_message_output(CM_OUTPUT_TAP);
103 return cmocka_run_group_tests(tests, NULL, NULL);
104}
int crm_str_to_boolean(const char *s, int *ret)
Definition: strings.c:427
int main(int argc, char **argv)