forked from enlightenment/efl
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:
parent
631f506a6f
commit
e6c8bf7fbf
|
@ -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
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue