#include #include #include #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, };