tests: rework eina hash fuzzing tests

these are supposed to be for testing the finding of values not in the
hash, not basic hash operations

fix T6839

Reviewed-by: Stefan Schmidt <stefan@osg.samsung.com>
This commit is contained in:
Mike Blumenkrantz 2018-03-30 14:27:51 -04:00 committed by Stefan Schmidt
parent 631f506a6f
commit e6c8bf7fbf
1 changed files with 36 additions and 77 deletions

View File

@ -268,119 +268,78 @@ EFL_END_TEST
EFL_START_TEST(eina_test_hash_int32_fuzze) EFL_START_TEST(eina_test_hash_int32_fuzze)
{ {
Eina_Hash *hash; Eina_Hash *hash;
Eina_List *added = NULL; unsigned int *r, *array;
unsigned int *r;
unsigned int i; unsigned int i;
unsigned int j;
unsigned int seed; unsigned int seed;
unsigned int num_loops = 10000;
seed = time(NULL); seed = time(NULL);
srand(seed); srand(seed);
hash = eina_hash_int32_new(free); hash = eina_hash_int32_new(NULL);
for (i = 0; i < 10000; ++i) array = malloc(sizeof(int) * num_loops);
for (i = 0; i < num_loops; ++i)
{ {
r = malloc(sizeof (unsigned int)); r = array + i;
*r = rand(); *r = rand() % 10000;
eina_hash_direct_add(hash, r, r); ck_assert_int_ne(eina_hash_direct_add(hash, r, r), 0);
} }
for (j = 0; j < 100; ++j) for (i = 0; i < num_loops / 2; ++i)
{ {
for (i = 0; i < 1000; ++i) unsigned int tr = rand() + 10000;
{ r = eina_hash_find(hash, &tr);
do ck_assert_ptr_null(r);
{ }
unsigned int tr;
tr = rand(); for (i = 0; i < num_loops / 2; ++i)
r = eina_hash_find(hash, &tr); {
if (r) unsigned int tr = (rand() % 10000) - (10000 * 2);
{ r = eina_hash_find(hash, &tr);
r = NULL; ck_assert_ptr_null(r);
continue;
}
r = malloc(sizeof (unsigned int));
*r = tr;
eina_hash_direct_add(hash, r, r);
added = eina_list_append(added, r);
}
while (r == NULL);
}
EINA_LIST_FREE(added, r)
{
unsigned int *s;
s = eina_hash_find(hash, r);
fail_if(s != r);
eina_hash_del(hash, r, r);
}
} }
eina_hash_free(hash); eina_hash_free(hash);
free(array);
} }
EFL_END_TEST EFL_END_TEST
EFL_START_TEST(eina_test_hash_string_fuzze) EFL_START_TEST(eina_test_hash_string_fuzze)
{ {
Eina_Hash *hash; Eina_Hash *hash;
Eina_List *added = NULL;
char *r;
unsigned int i; unsigned int i;
unsigned int j;
unsigned int seed; unsigned int seed;
char *array;
unsigned int num_loops = 100;
seed = time(NULL); seed = time(NULL);
srand(seed); srand(seed);
hash = eina_hash_string_superfast_new(free); hash = eina_hash_string_superfast_new(NULL);
for (i = 0; i < 10000; ++i) array = malloc(num_loops * 10);
ck_assert_ptr_nonnull(array);
for (i = 0; i < num_loops; ++i)
{ {
char convert[128]; char *tmp = array + (i * 10);
eina_convert_itoa(i, tmp);
eina_convert_itoa(rand(), convert); fail_if(eina_hash_direct_add(hash, tmp, tmp) != EINA_TRUE);
r = strdup(convert);
eina_hash_direct_add(hash, r, r);
} }
for (j = 0; j < 50; ++j) for (i = 0; i < num_loops; ++i)
{ {
for (i = 0; i < 1000; ++i) char convert[128];
{ char *r;
do
{
char convert[128];
eina_convert_itoa(rand(), convert); eina_convert_itoa(rand() + num_loops, convert);
r = eina_hash_find(hash, convert); r = eina_hash_find(hash, convert);
if (r) ck_assert_ptr_null(r);
{
r = NULL;
continue;
}
r = strdup(convert);
eina_hash_direct_add(hash, r, r);
added = eina_list_append(added, r);
}
while (r == NULL);
}
EINA_LIST_FREE(added, r)
{
char *s;
s = eina_hash_find(hash, r);
fail_if(s != r);
eina_hash_del(hash, r, r);
}
} }
eina_hash_free(hash); eina_hash_free(hash);
free(array);
} }
EFL_END_TEST EFL_END_TEST