From fcbc253bf993357d99c1bf98535a9393addd8441 Mon Sep 17 00:00:00 2001 From: Colin Leroy-Mira Date: Thu, 3 Jul 2025 23:43:04 +0200 Subject: [PATCH] Add strlen and strnlen unit tests --- test/val/lib_common_strlen.c | 22 ++++++++++++++++++++++ test/val/lib_common_strnlen.c | 29 +++++++++++++++++++++++++++++ 2 files changed, 51 insertions(+) create mode 100644 test/val/lib_common_strlen.c create mode 100644 test/val/lib_common_strnlen.c diff --git a/test/val/lib_common_strlen.c b/test/val/lib_common_strlen.c new file mode 100644 index 000000000..ec79c025a --- /dev/null +++ b/test/val/lib_common_strlen.c @@ -0,0 +1,22 @@ +#include +#include "unittest.h" + +#define SHORT_STR "abcdefghijklmnopqrstuvwxyz" + +#define MID_STR_LEN 700 /* Two pages and something */ +TEST +{ + char *src; + int i; + + /* Long enough for the whole string */ + ASSERT_IsTrue(strlen("") == 0, "strlen(\"\") != 0"); + ASSERT_IsTrue(strlen(SHORT_STR) == 26, "strlen(\""SHORT_STR"\") != 26"); + + src = malloc(MID_STR_LEN+1); + ASSERT_IsTrue(src != NULL, "Could not allocate source string"); + memset(src, 'a', MID_STR_LEN-1); + src[MID_STR_LEN] = '\0'; + ASSERT_IsTrue(strlen(src) == MID_STR_LEN, "strlen(\"700 chars\") != 700"); +} +ENDTEST diff --git a/test/val/lib_common_strnlen.c b/test/val/lib_common_strnlen.c new file mode 100644 index 000000000..892bdffa1 --- /dev/null +++ b/test/val/lib_common_strnlen.c @@ -0,0 +1,29 @@ +#include +#include "unittest.h" + +#define SHORT_STR "abcdefghijklmnopqrstuvwxyz" + +#define MID_STR_LEN 700 /* Two pages and something */ +TEST +{ + char *src; + int i; + + /* Long enough for the whole string */ + ASSERT_IsTrue(strnlen("", 0) == 0, "strnlen(\"\", 0) != 0"); + ASSERT_IsTrue(strnlen("", 10) == 0, "strnlen(\"\", 10) != 0"); + ASSERT_IsTrue(strnlen(SHORT_STR, 0) == 0, "strnlen(\""SHORT_STR"\", 0) != 0"); + ASSERT_IsTrue(strnlen(SHORT_STR, 10) == 10, "strnlen(\""SHORT_STR"\", 10) != 10"); + ASSERT_IsTrue(strnlen(SHORT_STR, 26) == 26, "strnlen(\""SHORT_STR"\", 26) != 26"); + ASSERT_IsTrue(strnlen(SHORT_STR, 50) == 26, "strnlen(\""SHORT_STR"\", 50) != 26"); + + src = malloc(MID_STR_LEN+1); + ASSERT_IsTrue(src != NULL, "Could not allocate source string"); + memset(src, 'a', MID_STR_LEN-1); + src[MID_STR_LEN] = '\0'; + ASSERT_IsTrue(strnlen(src, 0) == 0, "strnlen(src, 0) != 0"); + ASSERT_IsTrue(strnlen(src, 10) == 10, "strnlen(src, 10) != 10"); + ASSERT_IsTrue(strnlen(src, 260) == 260, "strnlen(src, 260) != 260"); + ASSERT_IsTrue(strnlen(src, MID_STR_LEN+1) == MID_STR_LEN, "strnlen(src, MID_STR_LEN+1) != MID_STR_LEN"); +} +ENDTEST