string: add tests for a bunch of naive str functions

This commit is contained in:
Lephenixnoir 2021-05-23 17:43:14 +02:00
parent 32b2bad9fc
commit 0048fb03ee
Signed by: Lephenixnoir
GPG Key ID: 1BBA026E13FC0495
4 changed files with 77 additions and 5 deletions

View File

@ -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

View File

@ -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_ */

View File

@ -30,11 +30,7 @@ ft_list headers_libc[] = {
{ "<locale.h>", NULL },
{ "<setjmp.h>", NULL },
{ "<signal.h>", NULL },
{ "<stdio.h>", NULL },/*(ft_test[]){
{ "Formatted printing basics", NULL, NULL },
{ "Format types and options", NULL, NULL },
{ NULL },
}}, */
{ "<stdio.h>", NULL },
{ "<stdlib.h>", (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,
}},
{ "<time.h>", NULL },

71
src/string/naive.c Normal file
View File

@ -0,0 +1,71 @@
#include <ft/test.h>
#include <ft/all-tests.h>
#include <string.h>
#include <errno.h>
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,
};