Just to make sure strjoin works as intended, add some simple unit tests. Signed-off-by: Ahmad Fatoum <a.fatoum@xxxxxxxxxxxxxx> --- test/self/Kconfig | 5 +++++ test/self/Makefile | 1 + test/self/string.c | 46 ++++++++++++++++++++++++++++++++++++++++++++++ 3 files changed, 52 insertions(+) create mode 100644 test/self/string.c diff --git a/test/self/Kconfig b/test/self/Kconfig index f3cb6601e3b8..3a5e7795fea8 100644 --- a/test/self/Kconfig +++ b/test/self/Kconfig @@ -38,6 +38,11 @@ config SELFTEST_ENABLE_ALL help Selects all self-tests compatible with current configuration +config SELFTEST_STRING + bool "string selftest" + help + Tests some of the string library functions + config SELFTEST_MALLOC bool "malloc() selftest" help diff --git a/test/self/Makefile b/test/self/Makefile index 6f2c0d394034..5d9d772d13b0 100644 --- a/test/self/Makefile +++ b/test/self/Makefile @@ -1,6 +1,7 @@ # SPDX-License-Identifier: GPL-2.0 obj-$(CONFIG_SELFTEST) += core.o +obj-$(CONFIG_SELFTEST_STRING) += string.o obj-$(CONFIG_SELFTEST_MALLOC) += malloc.o obj-$(CONFIG_SELFTEST_PRINTF) += printf.o obj-$(CONFIG_SELFTEST_PROGRESS_NOTIFIER) += progress-notifier.o diff --git a/test/self/string.c b/test/self/string.c new file mode 100644 index 000000000000..b5785da20d8d --- /dev/null +++ b/test/self/string.c @@ -0,0 +1,46 @@ +// SPDX-License-Identifier: GPL-2.0-only + +#define pr_fmt(fmt) KBUILD_MODNAME ": " fmt + +#include <common.h> +#include <bselftest.h> +#include <malloc.h> +#include <string.h> + +BSELFTEST_GLOBALS(); + +static void __expect_streq(const char *is, const char *expect, + const char *func, int line) +{ + total_tests++; + if (strcmp(is, expect)) { + failed_tests++; + printf("%s:%d: got %s, but %s expected\n", func, line, is, expect); + } +} + +#define expect_streq(is, expect) \ + __expect_streq(is, expect, __func__, __LINE__) + +static void test_string(void) +{ + char *strs[] = { "ayy", "bee", "cee" }; + char *buf; + + buf = strjoin("", strs, ARRAY_SIZE(strs)); + expect_streq(buf, "ayybeecee"); + free(buf); + + buf = strjoin(" ", strs, ARRAY_SIZE(strs)); + expect_streq(buf, "ayy bee cee"); + free(buf); + + buf = strjoin(", ", strs, ARRAY_SIZE(strs)); + expect_streq(buf, "ayy, bee, cee"); + free(buf); + + buf = strjoin(" ", strs, 1); + expect_streq(buf, "ayy"); + free(buf); +} +bselftest(core, test_string); -- 2.30.2