forked from Lephenixnoir/FxLibcTest
string: add a test for memcmp
This commit is contained in:
parent
65979454ba
commit
f852d9f7f3
|
@ -44,6 +44,7 @@ ft_list headers_libc[] = {
|
|||
&ft_string_memset,
|
||||
&ft_string_memcpy,
|
||||
&ft_string_memmove,
|
||||
&ft_string_memcmp,
|
||||
NULL,
|
||||
}},
|
||||
{ "<time.h>", NULL },
|
||||
|
|
|
@ -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,
|
||||
};
|
||||
|
|
Loading…
Reference in New Issue