string: add a test for strlen

This commit is contained in:
Lephenixnoir 2021-05-23 15:56:45 +02:00
parent 86857d9d4f
commit 32b2bad9fc
Signed by: Lephenixnoir
GPG Key ID: 1BBA026E13FC0495
4 changed files with 59 additions and 1 deletions

View File

@ -33,8 +33,9 @@ set(SOURCES
src/stdlib/intconv.c
src/stdlib/sizes.c
# string
src/string/memarray.c
src/string/core.c
src/string/memarray.c
src/string/misc.c
)
# fx-9860G-only assets and fx-CG-50-only assets
set(ASSETS_fx

View File

@ -28,5 +28,6 @@ extern ft_test ft_string_memcpy;
extern ft_test ft_string_memmove;
extern ft_test ft_string_memcmp;
extern ft_test ft_string_memchr;
extern ft_test ft_string_strlen;
#endif /* _FT_ALL_TESTS_H_ */

View File

@ -49,6 +49,7 @@ ft_list headers_libc[] = {
&ft_string_memmove,
&ft_string_memcmp,
&ft_string_memchr,
&ft_string_strlen,
NULL,
}},
{ "<time.h>", NULL },

55
src/string/misc.c Normal file
View File

@ -0,0 +1,55 @@
#include <ft/test.h>
#include <ft/all-tests.h>
#include <string.h>
#include "memarray.h"
/* Make a string with size bytes (including NUL) */
static size_t makestr(char *buf, size_t size)
{
for(size_t i = 0; i < size - 1; i++)
buf[i] = '@' + (i & 31);
buf[size-1] = 0;
return size - 1;
}
/* Make a string of size slightly smaller than size bytes (including NUL) */
static size_t makenstr(char *buf, size_t size)
{
size_t n = max(3 * size / 4, 4);
makestr(buf, n);
return n;
}
//---
// strlen
//---
static int _string_strlen_func(memarray_args_t const *args)
{
size_t len = makestr(args->buf1, args->size);
return strlen(args->buf1) != len;
}
uint8_t _string_strlen_rc[MEMARRAY_RC_SINGLE];
static void _string_strlen(ft_test *t)
{
ft_assert(t, strlen("") == 0);
ft_assert(t, strlen("x") == 1);
ft_assert(t, strlen("xyz") == 3);
ft_assert(t, strlen("xyzt") == 4);
memarray_single(_string_strlen_rc, _string_strlen_func);
memarray_assert(_string_strlen_rc, t);
}
static jwidget *_string_strlen_widget(GUNUSED ft_test *t)
{
return memarray_widget(_string_strlen_rc);
}
ft_test ft_string_strlen = {
.name = "Configurations of strlen",
.function = _string_strlen,
.widget = _string_strlen_widget,
};