cedric pushed a commit to branch master.

http://git.enlightenment.org/core/efl.git/commit/?id=d31a85bb513df4cb0e30e5c5a98c0fd9e94594ea

commit d31a85bb513df4cb0e30e5c5a98c0fd9e94594ea
Author: Cedric Bail <[email protected]>
Date:   Wed Dec 4 15:20:17 2013 +0900

    eina: add fuzzy testing of the red black tree.
---
 src/tests/eina/eina_test_rbtree.c | 66 +++++++++++++++++++++++++++++++++++++++
 1 file changed, 66 insertions(+)

diff --git a/src/tests/eina/eina_test_rbtree.c 
b/src/tests/eina/eina_test_rbtree.c
index dba904a..203884f 100644
--- a/src/tests/eina/eina_test_rbtree.c
+++ b/src/tests/eina/eina_test_rbtree.c
@@ -439,6 +439,71 @@ START_TEST(eina_rbtree_simple_remove3)
 }
 END_TEST
 
+START_TEST(eina_rbtree_fuzzy)
+{
+   Eina_Rbtree_Int *child;
+   Eina_Rbtree *root = NULL;
+   Eina_List *added = NULL;
+   unsigned int i;
+   unsigned int j;
+   unsigned int seed;
+
+   eina_init();
+
+   seed = time(NULL);
+   srand(seed);
+
+   for (i = 0; i < 10000; i++)
+     {
+        child = _eina_rbtree_int_new(rand());
+        root = eina_rbtree_inline_insert(root, (Eina_Rbtree*) child,
+                                         
EINA_RBTREE_CMP_NODE_CB(eina_rbtree_int_cmp), NULL);
+     }
+
+   for (j = 0; j < 20; j++)
+     {
+        for (i = 0; i < 1000; i++)
+          {
+             int r;
+
+             do
+               {
+                  r = rand();
+
+                  child = (Eina_Rbtree_Int *) eina_rbtree_inline_lookup(root, 
&r, sizeof (int),
+                                                                        
EINA_RBTREE_CMP_KEY_CB(eina_rbtree_int_key), NULL);
+                  if (child)
+                    {
+                       child = NULL;
+                       continue ;
+                    }
+
+                  child = _eina_rbtree_int_new(r);
+                  root = eina_rbtree_inline_insert(root, (Eina_Rbtree*) child,
+                                                   
EINA_RBTREE_CMP_NODE_CB(eina_rbtree_int_cmp), NULL);
+                  added = eina_list_append(added, child);
+               }
+             while (child == NULL);
+          }
+
+        EINA_LIST_FREE(added, child)
+          {
+             Eina_Rbtree *lookup;
+
+             lookup = eina_rbtree_inline_lookup(root, &child->value, sizeof 
(int),
+                                                
EINA_RBTREE_CMP_KEY_CB(eina_rbtree_int_key), NULL);
+             fail_if(lookup == NULL);
+             fail_if(lookup != (Eina_Rbtree*) child);
+
+             root = eina_rbtree_inline_remove(root, (Eina_Rbtree*) child,
+                                              
EINA_RBTREE_CMP_NODE_CB(eina_rbtree_int_cmp), NULL);
+          }
+     }
+
+   eina_shutdown();
+}
+END_TEST
+
 void
 eina_test_rbtree(TCase *tc)
 {
@@ -448,5 +513,6 @@ eina_test_rbtree(TCase *tc)
    tcase_add_test(tc, eina_rbtree_simple_remove);
    tcase_add_test(tc, eina_rbtree_simple_remove2);
    tcase_add_test(tc, eina_rbtree_simple_remove3);
+   tcase_add_test(tc, eina_rbtree_fuzzy);
 }
 

-- 


Reply via email to