]> git.ipfire.org Git - thirdparty/u-boot.git/commitdiff
test: unit tests for strstr() and strnstr()
authorHeinrich Schuchardt <heinrich.schuchardt@canonical.com>
Mon, 3 Feb 2025 09:12:01 +0000 (10:12 +0100)
committerTom Rini <trini@konsulko.com>
Wed, 12 Feb 2025 18:37:17 +0000 (12:37 -0600)
Add unit tests for the library functions.

Signed-off-by: Heinrich Schuchardt <heinrich.schuchardt@canonical.com>
Acked-by: Ilias Apalodimas <ilias.apalodimas@linaro.org>
[jf: drop unwanted change to lib/string.c]
Signed-off-by: Jerome Forissier <jerome.forissier@linaro.org>
test/lib/string.c

index 8d22f3fd68f45cb91824be8b79c6912b4fb42230..31391a387b952691af7538b83502a9abb90123f9 100644 (file)
@@ -11,6 +11,7 @@
 
 #include <command.h>
 #include <log.h>
+#include <string.h>
 #include <test/lib.h>
 #include <test/test.h>
 #include <test/ut.h>
@@ -221,3 +222,42 @@ static int lib_memdup(struct unit_test_state *uts)
        return 0;
 }
 LIB_TEST(lib_memdup, 0);
+
+/** lib_strnstr() - unit test for strnstr() */
+static int lib_strnstr(struct unit_test_state *uts)
+{
+       const char *s1 = "Itsy Bitsy Teenie Weenie";
+       const char *s2 = "eenie";
+       const char *s3 = "eery";
+
+       ut_asserteq_ptr(&s1[12], strnstr(s1, s2, SIZE_MAX));
+       ut_asserteq_ptr(&s1[12], strnstr(s1, s2, 17));
+       ut_assertnull(strnstr(s1, s2, 16));
+       ut_assertnull(strnstr(s1, s2, 0));
+       ut_asserteq_ptr(&s1[13], strnstr(&s1[3], &s2[1], SIZE_MAX));
+       ut_asserteq_ptr(&s1[13], strnstr(&s1[3], &s2[1], 14));
+       ut_assertnull(strnstr(&s1[3], &s2[1], 13));
+       ut_assertnull(strnstr(&s1[3], &s2[1], 0));
+       ut_assertnull(strnstr(s1, s3, SIZE_MAX));
+       ut_assertnull(strnstr(s1, s3, 0));
+
+       return 0;
+}
+LIB_TEST(lib_strnstr, 0);
+
+/** lib_strstr() - unit test for strstr() */
+static int lib_strstr(struct unit_test_state *uts)
+{
+       const char *s1 = "Itsy Bitsy Teenie Weenie";
+       const char *s2 = "eenie";
+       const char *s3 = "easy";
+
+       ut_asserteq_ptr(&s1[12], strstr(s1, s2));
+       ut_asserteq_ptr(&s1[13], strstr(&s1[3], &s2[1]));
+       ut_assertnull(strstr(s1, s3));
+       ut_asserteq_ptr(&s1[2], strstr(s1, &s3[2]));
+       ut_asserteq_ptr(&s1[8], strstr(&s1[5], &s3[2]));
+
+       return 0;
+}
+LIB_TEST(lib_strstr, 0);