eina: add fuzzy test of eina_hash.
authorCedric Bail <cedric.bail@samsung.com>
Wed, 4 Dec 2013 08:21:47 +0000 (17:21 +0900)
committerCedric Bail <cedric.bail@samsung.com>
Wed, 4 Dec 2013 09:33:04 +0000 (18:33 +0900)
src/tests/eina/eina_test_hash.c

index 564625e..78526b9 100644 (file)
@@ -197,6 +197,69 @@ START_TEST(eina_hash_all_int)
 }
 END_TEST
 
+START_TEST(eina_hash_int32_fuzze)
+{
+   Eina_Hash *hash;
+   Eina_List *added = NULL;
+   unsigned int *r;
+   unsigned int i;
+   unsigned int j;
+   unsigned int seed;
+
+   eina_init();
+
+   seed = time(NULL);
+   srand(seed);
+
+   hash = eina_hash_int32_new(free);
+
+   for (i = 0; i < 10000; ++i)
+     {
+        r = malloc(sizeof (unsigned int));
+        *r = rand();
+        eina_hash_direct_add(hash, r, r);
+     }
+
+   for (j = 0; j < 100; ++j)
+     {
+        for (i = 0; i < 1000; ++i)
+          {
+             do
+               {
+                  unsigned int tr;
+
+                  tr = rand();
+                  r = eina_hash_find(hash, &tr);
+                  if (r)
+                    {
+                       r = NULL;
+                       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_shutdown();
+}
+END_TEST
+
 START_TEST(eina_hash_seed)
 {
    eina_init();
@@ -214,4 +277,5 @@ void eina_test_hash(TCase *tc)
    tcase_add_test(tc, eina_hash_double_item);
    tcase_add_test(tc, eina_hash_all_int);
    tcase_add_test(tc, eina_hash_seed);
+   tcase_add_test(tc, eina_hash_int32_fuzze);
 }