aboutsummaryrefslogtreecommitdiff
path: root/tests
diff options
context:
space:
mode:
authorAndreas Schneider <asn@cryptomilk.org>2018-06-08 16:48:39 +0200
committerAndreas Schneider <asn@cryptomilk.org>2018-06-11 15:04:40 +0200
commit6221da1907a183c8564a2e93641bbb169006d324 (patch)
tree583eef0aeb929e607ac2cad6b92987ad4161e6f5 /tests
parentd30e4bf5964978d39cdafb7b4e1f3ce612a1f9ab (diff)
downloadcmocka-6221da1907a183c8564a2e93641bbb169006d324.tar.gz
cmocka-6221da1907a183c8564a2e93641bbb169006d324.tar.xz
cmocka-6221da1907a183c8564a2e93641bbb169006d324.zip
cmocka: Add c_strmatch() function
Diffstat (limited to 'tests')
-rw-r--r--tests/CMakeLists.txt1
-rw-r--r--tests/test_strmatch.c99
2 files changed, 100 insertions, 0 deletions
diff --git a/tests/CMakeLists.txt b/tests/CMakeLists.txt
index f17124a..f2e3ecd 100644
--- a/tests/CMakeLists.txt
+++ b/tests/CMakeLists.txt
@@ -18,6 +18,7 @@ set(CMOCKA_TESTS
test_exception_handler
test_basics
test_skip
+ test_strmatch
test_setup_fail
test_ordering
test_ordering_fail
diff --git a/tests/test_strmatch.c b/tests/test_strmatch.c
new file mode 100644
index 0000000..f2d966b
--- /dev/null
+++ b/tests/test_strmatch.c
@@ -0,0 +1,99 @@
+/*
+ * Copyright 2018 Andreas Schneider <asn@cryptomilk.org>
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#include "config.h"
+
+#include <stdarg.h>
+#include <stddef.h>
+#include <setjmp.h>
+#include <cmocka.h>
+
+#include "../src/cmocka.c"
+
+static void test_strmatch_null(void **state)
+{
+ int rc;
+
+ (void)state;
+
+ rc = c_strmatch(NULL, NULL);
+ assert_int_equal(rc, 0);
+
+ rc = c_strmatch("", NULL);
+ assert_int_equal(rc, 0);
+
+ rc = c_strmatch(NULL, "");
+ assert_int_equal(rc, 0);
+}
+
+static void test_strmatch_empty(void **state)
+{
+ int rc;
+
+ (void)state;
+
+ rc = c_strmatch("", "");
+ assert_int_equal(rc, 1);
+
+ rc = c_strmatch("wurst", "");
+ assert_int_equal(rc, 0);
+
+ rc = c_strmatch("", "wurst");
+ assert_int_equal(rc, 0);
+}
+
+static void test_strmatch_single(void **state)
+{
+ int rc;
+
+ (void)state;
+
+ rc = c_strmatch("wurst", "wurs?");
+ assert_int_equal(rc, 1);
+
+ rc = c_strmatch("wurst", "w?rs?");
+ assert_int_equal(rc, 1);
+
+ rc = c_strmatch("wurst", "wur?");
+ assert_int_equal(rc, 0);
+}
+
+static void test_strmatch_wildcard(void **state)
+{
+ int rc;
+
+ (void)state;
+
+ rc = c_strmatch("wurst", "wurst*");
+ assert_int_equal(rc, 1);
+
+ rc = c_strmatch("wurstbrot", "wurst*");
+ assert_int_equal(rc, 1);
+
+ rc = c_strmatch("wurstbrot", "w*t");
+ assert_int_equal(rc, 1);
+}
+
+int main(void) {
+ const struct CMUnitTest tests[] = {
+ cmocka_unit_test(test_strmatch_null),
+ cmocka_unit_test(test_strmatch_empty),
+ cmocka_unit_test(test_strmatch_single),
+ cmocka_unit_test(test_strmatch_wildcard),
+ };
+
+ return cmocka_run_group_tests(tests, NULL, NULL);
+}