string: add a test for memcmp

This commit is contained in:
Lephenixnoir 2021-05-22 09:09:28 +02:00
parent 65979454ba
commit f852d9f7f3
Signed by untrusted user: Lephenixnoir
GPG Key ID: 1BBA026E13FC0495
2 changed files with 45 additions and 0 deletions

View File

@ -44,6 +44,7 @@ ft_list headers_libc[] = {
&ft_string_memset,
&ft_string_memcpy,
&ft_string_memmove,
&ft_string_memcmp,
NULL,
}},
{ "<time.h>", NULL },

View File

@ -166,3 +166,47 @@ ft_test ft_string_memmove = {
.function = _string_memmove,
.widget = _string_memmove_widget,
};
//---
// memcmp
//---
static int _string_memcmp_func(memarray_args_t const *args)
{
/* Create data that matches in the given regions */
fill(args->full_left1, args->full_size, args->left1 - args->full_left1);
fill(args->full_right1, args->full_size, args->right1 - args->full_right1);
/* Check equality */
if(memcmp(args->left1, args->right1, args->size) !=
naive_memcmp(args->left1, args->right1, args->size)) return 1;
/* Check that changing single bytes changes the result */
for(size_t i = 0; i < args->size / 4; i++) {
((uint8_t *)args->right1)[i] ^= 0xff;
if(memcmp(args->left1, args->right1, args->size) !=
naive_memcmp(args->left1, args->right1, args->size)) return 1;
((uint8_t *)args->right1)[i] ^= 0xff;
}
return 0;
}
uint8_t _string_memcmp_rc[MEMARRAY_RC_DOUBLE];
static void _string_memcmp(ft_test *t)
{
memarray_double(_string_memcmp_rc, false, _string_memcmp_func);
memarray_assert(_string_memcmp_rc, t);
}
static jwidget *_string_memcmp_widget(GUNUSED ft_test *t)
{
return memarray_widget(_string_memcmp_rc);
}
ft_test ft_string_memcmp= {
.name = "Configurations of memcmp",
.function = _string_memcmp,
.widget = _string_memcmp_widget,
};