diff options
Diffstat (limited to 'tests')
-rw-r--r-- | tests/commonlib/Makefile.inc | 2 | ||||
-rw-r--r-- | tests/commonlib/bsd/Makefile.inc | 5 | ||||
-rw-r--r-- | tests/commonlib/bsd/helpers-test.c | 41 |
3 files changed, 48 insertions, 0 deletions
diff --git a/tests/commonlib/Makefile.inc b/tests/commonlib/Makefile.inc index c620754e33..054e7db16d 100644 --- a/tests/commonlib/Makefile.inc +++ b/tests/commonlib/Makefile.inc @@ -1,5 +1,7 @@ # SPDX-License-Identifier: GPL-2.0-only +subdirs-y += bsd + tests-y += region-test region-test-srcs += tests/commonlib/region-test.c diff --git a/tests/commonlib/bsd/Makefile.inc b/tests/commonlib/bsd/Makefile.inc new file mode 100644 index 0000000000..56664d037c --- /dev/null +++ b/tests/commonlib/bsd/Makefile.inc @@ -0,0 +1,5 @@ +# SPDX-License-Identifier: GPL-2.0-only + +tests-y += helpers-test + +helpers-test-srcs += tests/commonlib/bsd/helpers-test.c diff --git a/tests/commonlib/bsd/helpers-test.c b/tests/commonlib/bsd/helpers-test.c new file mode 100644 index 0000000000..ec3f98bed1 --- /dev/null +++ b/tests/commonlib/bsd/helpers-test.c @@ -0,0 +1,41 @@ +/* SPDX-License-Identifier: GPL-2.0-only */ + +#include <commonlib/bsd/helpers.h> +#include <tests/test.h> + +static void func(void) +{ + function_called(); +} + +static void test_retry(void **state) +{ + int count; + + /* 2-argument form */ + count = 0; + assert_true(retry(3, ++count == 1)); + count = 0; + assert_true(retry(3, ++count == 3)); + count = 0; + assert_false(retry(3, ++count == 4)); + + /* 3-argument form */ + expect_function_calls(func, 9); + assert_null(retry(10, NULL, func())); + + assert_int_equal(retry(10, 999, func()), 999); + + count = 0; + expect_function_calls(func, 3); + assert_true(retry(10, ++count == 4, func())); +} + +int main(void) +{ + const struct CMUnitTest tests[] = { + cmocka_unit_test(test_retry), + }; + + return cmocka_run_group_tests(tests, NULL, NULL); +} |