From 0048fb03ee1e202f0817fdb5d6780bcaaa8ddcc9 Mon Sep 17 00:00:00 2001 From: Lephenixnoir Date: Sun, 23 May 2021 17:43:14 +0200 Subject: [PATCH] string: add tests for a bunch of naive str functions --- CMakeLists.txt | 1 + include/ft/all-tests.h | 2 ++ src/main.c | 8 ++--- src/string/naive.c | 71 ++++++++++++++++++++++++++++++++++++++++++ 4 files changed, 77 insertions(+), 5 deletions(-) create mode 100644 src/string/naive.c diff --git a/CMakeLists.txt b/CMakeLists.txt index f848195..c9b5916 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -36,6 +36,7 @@ set(SOURCES src/string/core.c src/string/memarray.c src/string/misc.c + src/string/naive.c ) # fx-9860G-only assets and fx-CG-50-only assets set(ASSETS_fx diff --git a/include/ft/all-tests.h b/include/ft/all-tests.h index 6ccb7c0..1c8cb87 100644 --- a/include/ft/all-tests.h +++ b/include/ft/all-tests.h @@ -29,5 +29,7 @@ extern ft_test ft_string_memmove; extern ft_test ft_string_memcmp; extern ft_test ft_string_memchr; extern ft_test ft_string_strlen; +extern ft_test ft_string_naive; +extern ft_test ft_string_strerror; #endif /* _FT_ALL_TESTS_H_ */ diff --git a/src/main.c b/src/main.c index 1b86219..cc1ca06 100644 --- a/src/main.c +++ b/src/main.c @@ -30,11 +30,7 @@ ft_list headers_libc[] = { { "", NULL }, { "", NULL }, { "", NULL }, - { "", NULL },/*(ft_test[]){ - { "Formatted printing basics", NULL, NULL }, - { "Format types and options", NULL, NULL }, - { NULL }, - }}, */ + { "", NULL }, { "", (ft_test*[]){ &ft_stdlib_arith, &ft_stdlib_sizes, @@ -50,6 +46,8 @@ ft_list headers_libc[] = { &ft_string_memcmp, &ft_string_memchr, &ft_string_strlen, + &ft_string_naive, + &ft_string_strerror, NULL, }}, { "", NULL }, diff --git a/src/string/naive.c b/src/string/naive.c new file mode 100644 index 0000000..5e208e8 --- /dev/null +++ b/src/string/naive.c @@ -0,0 +1,71 @@ +#include +#include +#include +#include + +static void _ft_string_naive(ft_test *t) +{ + char const *s1; + char s2[64]; + + s1 = "xyztuvxyztuv"; + ft_assert(t, strchr(s1, 'z') == s1 + 2); + ft_assert(t, strchr(s1, 'w') == NULL); + ft_assert(t, strrchr(s1, 'u') == s1 + 10); + ft_assert(t, strrchr(s1, 'x') == s1 + 6); + ft_assert(t, strrchr(s1, 'w') == NULL); + ft_assert(t, strchrnul(s1, 't') == s1 + 3); + ft_assert(t, strchrnul(s1, 'w') == s1 + 12); + + ft_assert(t, strcmp("xyz", "xyz") == 0); + ft_assert(t, strcmp("xyz\0t", "xyz\0v") == 0); + ft_assert(t, strcmp("xyz", "xyt") == 6); + ft_assert(t, strcmp("xyt", "xyz") == -6); + ft_assert(t, strcmp("ab", "abc") == -'c'); + ft_assert(t, strcmp("", "") == 0); + ft_assert(t, strcmp("x", "") == 'x'); + ft_assert(t, strncmp("xyz", "xyt", 2) == 0); + ft_assert(t, strncmp("xyz\0t", "xyz\0v", 5) == 0); + + strcpy(s2, s1); + ft_assert(t, strcmp(s1, s2) == 0); + + memset(s2, 0x55, sizeof s2); + strncpy(s2, s1, 10); + ft_assert(t, strcmp(s1, s2) != 0 && strncmp(s1, s2, 10) == 0); + + strncpy(s2, s1, 15); + ft_assert(t, memcmp(s2, "xyztuvxyztuv\0\0\0", 15) == 0); + + strncpy(s2, s1, 5); + s2[5] = 0; + strcat(s2, s1 + 5); + ft_assert(t, strcmp(s1, s2) == 0); + + memset(s2, 0x55, sizeof s2); + strncpy(s2, s1, 4); + s2[4] = 0; + strncat(s2, s1 + 4, 4); + ft_assert(t, strcmp(s1, s2) != 0 && strncmp(s1, s2, 8) == 0); + ft_assert(t, strcmp(s2, "xyztuvxy") == 0); +} + +ft_test ft_string_naive = { + .name = "Naive string functions", + .function = _ft_string_naive, +}; + +static void _ft_string_strerror(ft_test *t) +{ + ft_log(t, "0: %s\n", strerror(0)); + ft_log(t, "EDOM: %s\n", strerror(EDOM)); + ft_log(t, "EILSEQ: %s\n", strerror(EILSEQ)); + ft_log(t, "ERANGE: %s\n", strerror(ERANGE)); + ft_log(t, "-1: %s\n", strerror(-1)); + ft_log(t, "999999: %s\n", strerror(999999)); +} + +ft_test ft_string_strerror = { + .name = "strerror messages", + .function = _ft_string_strerror, +};