FxLibcTest/src/string/misc.c

57 lines
1.3 KiB
C

#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) */
__attribute__((unused))
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,
};