string: add a test for strlen
This commit is contained in:
parent
86857d9d4f
commit
32b2bad9fc
|
@ -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
|
||||
|
|
|
@ -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_ */
|
||||
|
|
|
@ -49,6 +49,7 @@ ft_list headers_libc[] = {
|
|||
&ft_string_memmove,
|
||||
&ft_string_memcmp,
|
||||
&ft_string_memchr,
|
||||
&ft_string_strlen,
|
||||
NULL,
|
||||
}},
|
||||
{ "<time.h>", NULL },
|
||||
|
|
|
@ -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,
|
||||
};
|
Loading…
Reference in New Issue