2021-05-23 15:56:45 +02:00
|
|
|
#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) */
|
2021-05-29 21:50:12 +02:00
|
|
|
__attribute__((unused))
|
2021-05-23 15:56:45 +02:00
|
|
|
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,
|
|
|
|
};
|