[PATCH 048/112] test: self: add strjoin tests

Ahmad Fatoum a.fatoum at pengutronix.de
Wed Jan 3 10:12:08 PST 2024


Just to make sure strjoin works as intended, add some simple unit tests.

Signed-off-by: Ahmad Fatoum <a.fatoum at pengutronix.de>
---
 test/self/string.c | 28 ++++++++++++++++++++++++++++
 1 file changed, 28 insertions(+)

diff --git a/test/self/string.c b/test/self/string.c
index f03a7410cd64..d33e2d7918ca 100644
--- a/test/self/string.c
+++ b/test/self/string.c
@@ -168,8 +168,36 @@ static void test_strverscmp(void)
 	strverscmp_assert_one("", "", 0);
 }
 
+static void __expect_streq(const char *func, int line,
+			   char *is, const char *expect, bool free_is)
+{
+	total_tests++;
+	if (strcmp(is, expect)) {
+		failed_tests++;
+		printf("%s:%d: got %s, but %s expected\n", func, line, is, expect);
+	}
+
+	if (free_is)
+		free(is);
+}
+
+#define expect_dynstreq(args...) \
+	__expect_streq(__func__, __LINE__, args, true)
+
+static void test_strjoin(void)
+{
+	char *strs[] = { "ayy", "bee", "cee" };
+
+	expect_dynstreq(strjoin("",    strs, ARRAY_SIZE(strs)), "ayybeecee");
+	expect_dynstreq(strjoin(" ",   strs, ARRAY_SIZE(strs)), "ayy bee cee");
+	expect_dynstreq(strjoin(", ",  strs, ARRAY_SIZE(strs)), "ayy, bee, cee");
+	expect_dynstreq(strjoin(" ",   strs, 1),                "ayy");
+	expect_dynstreq(strjoin(" ",   NULL, 0),                "");
+}
+
 static void test_string(void)
 {
 	test_strverscmp();
+	test_strjoin();
 }
 bselftest(parser, test_string);
-- 
2.39.2




More information about the barebox mailing list