diff options
author | Andreas Schneider <asn@cryptomilk.org> | 2018-06-08 16:48:39 +0200 |
---|---|---|
committer | Andreas Schneider <asn@cryptomilk.org> | 2018-06-11 15:04:40 +0200 |
commit | 6221da1907a183c8564a2e93641bbb169006d324 (patch) | |
tree | 583eef0aeb929e607ac2cad6b92987ad4161e6f5 /tests | |
parent | d30e4bf5964978d39cdafb7b4e1f3ce612a1f9ab (diff) | |
download | cmocka-6221da1907a183c8564a2e93641bbb169006d324.tar.gz cmocka-6221da1907a183c8564a2e93641bbb169006d324.tar.xz cmocka-6221da1907a183c8564a2e93641bbb169006d324.zip |
cmocka: Add c_strmatch() function
Diffstat (limited to 'tests')
-rw-r--r-- | tests/CMakeLists.txt | 1 | ||||
-rw-r--r-- | tests/test_strmatch.c | 99 |
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); +} |