summaryrefslogtreecommitdiff
path: root/tests/commonlib
diff options
context:
space:
mode:
Diffstat (limited to 'tests/commonlib')
-rw-r--r--tests/commonlib/bsd/string-test.c57
1 files changed, 46 insertions, 11 deletions
diff --git a/tests/commonlib/bsd/string-test.c b/tests/commonlib/bsd/string-test.c
index d94b82e18c..29e3977675 100644
--- a/tests/commonlib/bsd/string-test.c
+++ b/tests/commonlib/bsd/string-test.c
@@ -1,24 +1,57 @@
/* SPDX-License-Identifier: GPL-2.0-only */
#include <commonlib/bsd/string.h>
+#include <stddef.h>
#include <tests/test.h>
-/* Used to test skip_atoi */
-struct str_with_u_val_t {
- char *str;
- uint32_t value;
- uint32_t offset;
-} str_with_u_val[] = {
- {"42aa", 42, 2},
- {"a", 0, 0},
- {"0", 0, 1},
- {"4a2", 4, 1},
-};
+static void test_strlen(void **state)
+{
+ const char *str;
+
+ str = "coreboot";
+ assert_int_equal(__builtin_strlen(str), strlen(str));
+
+ str = "is\0very";
+ assert_int_equal(__builtin_strlen(str), strlen(str));
+
+ str = "nice\n";
+ assert_int_equal(__builtin_strlen(str), strlen(str));
+
+ assert_int_equal(0, strlen(""));
+}
+
+static void test_strnlen(void **state)
+{
+ /* maxlen larger than string len */
+ assert_int_equal(8, strnlen("coreboot", 100));
+
+ /* maxlen equal to string len */
+ assert_int_equal(8, strnlen("coreboot", 8));
+
+ /* maxlen smaller than string len */
+ assert_int_equal(5, strnlen("coreboot", 5));
+
+ /* maxlen is 0 */
+ assert_int_equal(0, strnlen("coreboot", 0));
+
+ /* Empty string */
+ assert_int_equal(0, strnlen("", 3));
+}
static void test_skip_atoi(void **state)
{
int i;
char *ptr, *copy;
+ const struct str_with_u_val_t {
+ char *str;
+ uint32_t value;
+ uint32_t offset;
+ } str_with_u_val[] = {
+ {"42aa", 42, 2},
+ {"a", 0, 0},
+ {"0", 0, 1},
+ {"4a2", 4, 1},
+ };
for (i = 0; i < ARRAY_SIZE(str_with_u_val); i++) {
ptr = str_with_u_val[i].str;
@@ -31,6 +64,8 @@ static void test_skip_atoi(void **state)
int main(void)
{
const struct CMUnitTest tests[] = {
+ cmocka_unit_test(test_strlen),
+ cmocka_unit_test(test_strnlen),
cmocka_unit_test(test_skip_atoi),
};