]> git.ipfire.org Git - thirdparty/systemd.git/commitdiff
compare-operator: added unit tests
authorOMOJOLA JOSHUA DAMILOLA <omojolajoshua@gmail.com>
Sun, 19 Mar 2023 16:11:15 +0000 (16:11 +0000)
committerLuca Boccassi <luca.boccassi@gmail.com>
Mon, 20 Mar 2023 17:54:02 +0000 (17:54 +0000)
src/test/meson.build
src/test/test-compare-operator.c [new file with mode: 0644]

index afd95cf8dd4d3afc4be0ae179355b0ec01674d87..e709314152282fd3b643bd7d5ee8e1aca6fc2740 100644 (file)
@@ -54,6 +54,7 @@ simple_tests += files(
         'test-cgroup-util.c',
         'test-cgroup.c',
         'test-clock.c',
+        'test-compare-operator.c',
         'test-condition.c',
         'test-conf-files.c',
         'test-conf-parser.c',
diff --git a/src/test/test-compare-operator.c b/src/test/test-compare-operator.c
new file mode 100644 (file)
index 0000000..4aa991a
--- /dev/null
@@ -0,0 +1,42 @@
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
+
+#include "compare-operator.h"
+#include "tests.h"
+
+TEST(parse_compare_operator) {
+        const char *str_a = "<>version";
+        assert_se(parse_compare_operator(&str_a, 0) == COMPARE_UNEQUAL);
+        const char *str_b = "$=version";
+        assert_se(parse_compare_operator(&str_b, 0) == _COMPARE_OPERATOR_INVALID);
+        assert_se(parse_compare_operator(&str_b, COMPARE_ALLOW_FNMATCH) == COMPARE_FNMATCH_EQUAL);
+        const char *str_c = "eq oranges";
+        assert_se(parse_compare_operator(&str_c, 0) == _COMPARE_OPERATOR_INVALID);
+        assert_se(parse_compare_operator(&str_c, COMPARE_ALLOW_TEXTUAL) == COMPARE_EQUAL);
+        const char *str_d = "";
+        assert_se(parse_compare_operator(&str_d, 0) == _COMPARE_OPERATOR_INVALID);
+        const char *str_e = "!=!="; /* parse_compare_operator() moves the pointer */
+        assert_se(parse_compare_operator(&str_e, COMPARE_EQUAL_BY_STRING) == COMPARE_STRING_UNEQUAL);
+        assert_se(parse_compare_operator(&str_e, 0) == COMPARE_UNEQUAL);
+}
+
+TEST(test_order) {
+        assert_se(!test_order(5, COMPARE_LOWER));
+        assert_se(!test_order(5, COMPARE_LOWER_OR_EQUAL));
+        assert_se(!test_order(5, COMPARE_EQUAL));
+        assert_se(test_order(5, COMPARE_UNEQUAL));
+        assert_se(test_order(5, COMPARE_GREATER_OR_EQUAL));
+        assert_se(test_order(5, COMPARE_GREATER));
+        assert_se(test_order(5, COMPARE_STRING_EQUAL) == -EINVAL);
+}
+
+TEST(version_or_fnmatch_compare) {
+        assert_se(version_or_fnmatch_compare(COMPARE_STRING_EQUAL, "locale", "locale"));
+        assert_se(version_or_fnmatch_compare(COMPARE_STRING_UNEQUAL, "locale", "LOCALE"));
+        assert_se(version_or_fnmatch_compare(COMPARE_FNMATCH_EQUAL, "locaale", "loc*le"));
+        assert_se(version_or_fnmatch_compare(COMPARE_FNMATCH_UNEQUAL, "locaale", "loc?le"));
+        assert_se(version_or_fnmatch_compare(COMPARE_GREATER, "local512", "local256"));
+        assert_se(version_or_fnmatch_compare(COMPARE_LOWER, "local52", "local256"));
+        assert_se(version_or_fnmatch_compare(_COMPARE_OPERATOR_MAX, "local512", "local256") == -EINVAL);
+}
+
+DEFINE_TEST_MAIN(LOG_INFO);