summaryrefslogtreecommitdiffstats
path: root/tests
diff options
context:
space:
mode:
Diffstat (limited to 'tests')
-rw-r--r--tests/commonlib/Makefile.inc2
-rw-r--r--tests/commonlib/bsd/Makefile.inc5
-rw-r--r--tests/commonlib/bsd/helpers-test.c41
3 files changed, 48 insertions, 0 deletions
diff --git a/tests/commonlib/Makefile.inc b/tests/commonlib/Makefile.inc
index c620754e33c7..054e7db16de3 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 000000000000..56664d037cc2
--- /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 000000000000..ec3f98bed17a
--- /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);
+}